{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "836cb72a-6f86-4840-92e8-18e5fd8ee377",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from pandas import Series,DataFrame\n",
    " \n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    " \n",
    " \n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from sklearn import metrics\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import accuracy_score\n",
    " \n",
    "# 忽略警告\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    " \n",
    "#显示中文\n",
    "plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签\n",
    "plt.rcParams['axes.unicode_minus']=False   #这两行需要手动设置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "08773567-f27d-4c50-a917-8a257fdbc6f2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>887</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>Montvila, Rev. Juozas</td>\n",
       "      <td>male</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>211536</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>888</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Graham, Miss. Margaret Edith</td>\n",
       "      <td>female</td>\n",
       "      <td>19.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>112053</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>B42</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>889</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Johnston, Miss. Catherine Helen \"Carrie\"</td>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>W./C. 6607</td>\n",
       "      <td>23.4500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>890</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Behr, Mr. Karl Howell</td>\n",
       "      <td>male</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>111369</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>C148</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>891</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Dooley, Mr. Patrick</td>\n",
       "      <td>male</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>370376</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>891 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Survived  Pclass  \\\n",
       "0              1         0       3   \n",
       "1              2         1       1   \n",
       "2              3         1       3   \n",
       "3              4         1       1   \n",
       "4              5         0       3   \n",
       "..           ...       ...     ...   \n",
       "886          887         0       2   \n",
       "887          888         1       1   \n",
       "888          889         0       3   \n",
       "889          890         1       1   \n",
       "890          891         0       3   \n",
       "\n",
       "                                                  Name     Sex   Age  SibSp  \\\n",
       "0                              Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1    Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                               Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3         Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                             Allen, Mr. William Henry    male  35.0      0   \n",
       "..                                                 ...     ...   ...    ...   \n",
       "886                              Montvila, Rev. Juozas    male  27.0      0   \n",
       "887                       Graham, Miss. Margaret Edith  female  19.0      0   \n",
       "888           Johnston, Miss. Catherine Helen \"Carrie\"  female   NaN      1   \n",
       "889                              Behr, Mr. Karl Howell    male  26.0      0   \n",
       "890                                Dooley, Mr. Patrick    male  32.0      0   \n",
       "\n",
       "     Parch            Ticket     Fare Cabin Embarked  \n",
       "0        0         A/5 21171   7.2500   NaN        S  \n",
       "1        0          PC 17599  71.2833   C85        C  \n",
       "2        0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3        0            113803  53.1000  C123        S  \n",
       "4        0            373450   8.0500   NaN        S  \n",
       "..     ...               ...      ...   ...      ...  \n",
       "886      0            211536  13.0000   NaN        S  \n",
       "887      0            112053  30.0000   B42        S  \n",
       "888      2        W./C. 6607  23.4500   NaN        S  \n",
       "889      0            111369  30.0000  C148        C  \n",
       "890      0            370376   7.7500   NaN        Q  \n",
       "\n",
       "[891 rows x 12 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_train = pd.read_csv('./Titanic/train.csv')\n",
    " \n",
    "#训练集\n",
    "data_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4660b4a2-b795-4411-868d-20bbae6b7568",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          714 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        204 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.7+ KB\n"
     ]
    }
   ],
   "source": [
    "# 查看训练集大致情况，发现Age、Cabin、Embarked有缺失值\n",
    "data_train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0fd3e5be-1bb7-4154-985c-f87cddae9d62",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PassengerId      0\n",
       "Survived         0\n",
       "Pclass           0\n",
       "Name             0\n",
       "Sex              0\n",
       "Age            177\n",
       "SibSp            0\n",
       "Parch            0\n",
       "Ticket           0\n",
       "Fare             0\n",
       "Cabin          687\n",
       "Embarked         2\n",
       "dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  查看训练集缺失值情况\n",
    "data_train.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d9bc9670-2319-468c-9d50-8a9feaafc384",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>714.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.383838</td>\n",
       "      <td>2.308642</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0.523008</td>\n",
       "      <td>0.381594</td>\n",
       "      <td>32.204208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>257.353842</td>\n",
       "      <td>0.486592</td>\n",
       "      <td>0.836071</td>\n",
       "      <td>14.526497</td>\n",
       "      <td>1.102743</td>\n",
       "      <td>0.806057</td>\n",
       "      <td>49.693429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>223.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.125000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.910400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>14.454200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>668.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>31.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>512.329200</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       PassengerId    Survived      Pclass         Age       SibSp  \\\n",
       "count   891.000000  891.000000  891.000000  714.000000  891.000000   \n",
       "mean    446.000000    0.383838    2.308642   29.699118    0.523008   \n",
       "std     257.353842    0.486592    0.836071   14.526497    1.102743   \n",
       "min       1.000000    0.000000    1.000000    0.420000    0.000000   \n",
       "25%     223.500000    0.000000    2.000000   20.125000    0.000000   \n",
       "50%     446.000000    0.000000    3.000000   28.000000    0.000000   \n",
       "75%     668.500000    1.000000    3.000000   38.000000    1.000000   \n",
       "max     891.000000    1.000000    3.000000   80.000000    8.000000   \n",
       "\n",
       "            Parch        Fare  \n",
       "count  891.000000  891.000000  \n",
       "mean     0.381594   32.204208  \n",
       "std      0.806057   49.693429  \n",
       "min      0.000000    0.000000  \n",
       "25%      0.000000    7.910400  \n",
       "50%      0.000000   14.454200  \n",
       "75%      0.000000   31.000000  \n",
       "max      6.000000  512.329200  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  查看有无极端值以及数值分布情况\n",
    "data_train.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5998174d-63f8-4b7e-ad13-17f9611e2241",
   "metadata": {},
   "source": [
    "# EDA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "ad67ed67-be87-4426-93f7-b31000e6d47c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "男性获救的比例:0.19\n",
      "女性获救的比例:0.74\n"
     ]
    }
   ],
   "source": [
    "# 1、查看survived和性别(Sex)的关系：获救的女性更多\n",
    "\n",
    "# 有多少比例的男、女性获救\n",
    "men_sur = data_train.loc[data_train.Sex == 'male']['Survived']\n",
    "men_rate = men_sur.sum() / men_sur.count()\n",
    " \n",
    "women_sur = data_train.loc[data_train.Sex == 'female']['Survived']\n",
    "women_rate = women_sur.sum()/women_sur.count()\n",
    " \n",
    "print('男性获救的比例:%.2f' % men_rate) #结果为0.19\n",
    "print('女性获救的比例:%.2f' % women_rate) #结果为0.74"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "c1365095-64e8-434f-a48a-eb5a025ef5da",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "总获救人数：342\n",
      "获救的男女比例：0.47\n"
     ]
    }
   ],
   "source": [
    "# 获救的男女之比\n",
    "sur_sum = sum(data_train['Survived'] == 1)\n",
    "print('总获救人数：%.d' % sur_sum) #结果为342\n",
    " \n",
    "men_women_rate = men_sur.sum()  / women_sur.sum()\n",
    "print('获救的男女比例：%.2f' % men_women_rate) #结果为0.47"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "e644d0c4-35fe-4605-b9a9-fd3a3d16843d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjQAAAHECAYAAAAu8bCHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGsUlEQVR4nO3deVxV1eL///fhwGEQAREVR0BFxalSMcqrZplWKjbnVP661yybPyU3tRyarNSr3dtc+lEzrt2sbNSynDKjrpATonnzohlioiIHBQ7T+v3h1/3xBDilHre+no/HfuReaw9rbw/xdu2113EYY4wAAABszM/XDQAAAPijCDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDQAAMD2CDTAeeTzzz9XTk5OlfJdu3Zp0qRJx9w3NzdX7777rsrLy6ut37Bhg3bv3l3j/j/99JO+/fbbKsv69eurbFtWVqbrr79eGRkZx74gSZWVlcrPz9d//vMfrVy5UnPnztW4cePUr18/7dixo8b9du/erREjRig3N9cqe+WVV/TUU08d95yStHjxYo0fP16SdPDgQav80KFDmjRpknbt2lXjvtu3b9eYMWNUWFho7V9aWqojE7M/++yzWrNmjSSpoqJChYWFqqiosPYvKio6oTYCOIoBcN5o2LCh+eSTT6qUb9682QQGBpqPP/64xn2/+OILI8kcOnTIKjt48KD159jYWPO3v/2txv1vv/124+fnZwIDA63F6XSabt26Vbu9JLN06VJrffv27aZFixamefPmpkmTJiYqKsqEhIQYh8NhAgMDTYMGDUzr1q1NUlKS6devn7n99tvNvHnzvI65f/9+U1JSYsrKysx//vMfI8ls3brVlJWVmbKyMjNq1CiTnJxsysrKTGlpqTl06JApLCystn3Tp083Xbt2Ndu3bzdRUVFmy5YtxhhjlixZYpxOp/nll19qvBcbNmwwksy+ffuMMcZcdNFFRpLx8/MzTqfT688Oh8NIMmvXrjXGGLN7924TFxdnUlNTreONGjXKSKpxeeyxx2psC3Ch8PdFiAJwZrhcLgUEBFQpb9OmjR566CGv3orq9j36v5J0+eWX684779TDDz+s4OBgBQUF1bh/QECAbr/9ds2ZM8cqmzRpkr755htJ0q+//qpBgwZp7ty5atGihZxO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rKws9erVS1988YWWLVumRo0aqbS01KqfMmWKkpOT9ec//1mPP/54lf3z8vI0ceJE3XnnnVqxYoX16rXL5dLChQt13XXXKSIiQtdee60OHDhgDbw+3Ywxuvvuu3XJJZdo+PDhVvk//vEPXX755WrQoEGVfcrKyqr0NAEXGh45AecxPz8/3XDDDSosLNTIkSNVu3ZtPf/886pTp441+dvpYozR6NGjFRUVpeuuu84qLy4uVnBwsNq0aWPNSfN7nTp10vbt21WrVi2rbOnSpdVOJCdJpaWlXm9sSVKDBg3UtWtXPfXUUwoODta2bdusxzOrV6/W/Pnz9f3336tevXpq3769pk+f7vX2VHR0tNavX6/w8HDreo68oRUREaFZs2bJ4/Horrvuksvl0sGDBzVq1Ci9+uqrJzwAuqZHTkd79dVXtXLlSv3www/W+WfNmqUPPvjAmnzv97KysnT11Vdr0aJF6tKlywm1BTjf0EMDnAc2bNig2bNnKzc3VwEBAdq3b5+++uorPfbYY2rRooWeeOIJpaamavv27erWrZuuv/569e7d25rtVpIVNsz/m7hu586d2rt3rw4cOKADBw6osrJSxcXFOnDggPbv369ff/3V+hLFkpIS3XXXXXrvvff02muvyd/fX6WlpcrJydFPP/1khYQjdu7cqYqKCq/XzY8OM9LhN5+2b99e7fLCCy9UuQd169bV1KlTFRwcrJycHL377rvq3bu3/vOf/+jGG2/Ugw8+qIsvvliNGzfWm2++qZSUFD355JOqrKy0jhEeHq7Nmzdr9OjReumll1S/fn1Jh3tA5s2bp/bt22vx4sX66quv9NVXX+mDDz5Q586d9cknn3i15chr1EffU0nKzs6uMkng779CoW7duho3bpwSExO1b98+PfjggxoxYoQef/xxrx4hp9OppUuXatOmTXrvvfeUn59/QoEJOG/55kkXgNMpLS3NOJ1O06tXL1NQUGCWLl1q/P39zRVXXGFmz55tSkpKvLb//PPPTfPmzc26deussq+++spIMiUlJdYYkOMtn376qamsrDTdunUzTqfTa8xHcnKykWTq1q1rfv75Z2OMMaWlpaZ169bG39/fuFwuk5ubW+31jB49+rjnbtOmTZX9Nm7caO68805Tu3Ztc8MNN5jPP//chIWFmauuusqUlpZ6bfvGG28YPz8/c/fdd3uV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OOFA8+ijj2rEiBH68ssvlZ+fr3feeUdDhw5VbGys+vfvrwULFqikpETdu3fX+PHjlZOTU+OxVq5cqZSUFGvd5XLJ4XAoISHBKwhlZ2fL4/EoMjJSiYmJXnVr165V48aNT/Z6AQDAeeiEA83kyZPVo0cPHTx4UP7+/ho2bJj69++vv/zlL9Zr1HFxcUpISNAdd9yhm2++ucZjtWrVSm+++abefPNN7dy5U+PGjVOfPn103XXXye12a/bs2dY5e/fuLafTqeTkZK1evVpff/21ysrKNGXKFPXt2/eP3wEAAGB7JzwoeNCgQQoMDFRubq5yc3OVkJCghQsXKikpSeHh4froo480dOhQLVu2TDt27FBMTEyNx2rYsKHef/99Pfzwwxo9erT69u2rt99+W/7+/po5c6YGDx6slJQU+fn5acWKFZKkqKgozZgxQ9ddd51CQ0MVERFhzVEDAAAubCccaG688Ub5+/trw4YNeuGFF9ShQwddf/316t69uw4cOKBVq1Zpy5YtevnllzVq1CgtWrTomMe7+uqrtWnTpirlycnJ2rZtmzIyMpSUlKS6detadffcc4/69u2rLVu2qHv37goNDT2JSwUAAOerE37k1K1bN02fPl1hYWEaOHCgfvnlFwUFBVnzxDz++OOKjIzUjTfeqOLi4mPOEXM80dHR6tevn1eYOSIuLk7XXnstYQYAAFhOuIdm6dKlGjNmjIwx+umnn/TSSy+pe/fuSk9PV1BQkL755htrXpihQ4fq22+/VefOnc9YwwEAAI444UBz1113STr8XU7XXnutatWqpc8++0yRkZH64IMPJEmNGjWSMUa33XabateufWZaDAAA8Dsn/dUHLpdLtWrVkiS1a9dODodDl19+uVU/d+5cJScnn74WAgAAHMdJB5pjycvL07hx49SlS5fTeVgAAIBjOm2BpqioSDfccIOio6P11FNPna7DAgAAHNdpCTQ//fST/vSnP6mkpETLli1TcHDw6TgsAADACflDgWbv3r0aPXq0OnfurD59+mj16tWKiIg4TU0DAAA4MSf0ltOOHTv0r3/9S1FRUaqsrNT+/fuVkZGhlStX6uabb1Z6erratGlzptsKAABQrRMKNDt37tR7770nf39/+fn5KS8vTzt27FCDBg0UHh7Ot14DAACfOqFA86c//Unp6eleZcXFxVq9erXmzp2rSy65RPfee68mTJjA+BkAAHDWnfIYmuDgYPXu3Vvz5s3Tv//9b3377bfq2bOn8vPzT2f7AAAAjuu0vOXUunVrrVixQs2aNVP37t1VWFh4Og4LAABwQk7bPDROp1P/+te/VLduXd19992n67AAAADHdVpnCnY6nXrzzTf173//W/v37z+dhwYAAKjRCX855Ylq3bq1Nm7cyOBgAABw1pzWHpojCDMAAOBsOiOBBgAA4Gwi0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANvzWaD5+OOP1bx5c/n7++viiy/W5s2bJUmZmZlKTExUnTp1lJKSImOMtc/KlSuVkJCgqKgoTZ8+3VdNBwAA5xifBJpt27bpzjvv1PPPP6+cnBy1atVKI0aMkMfj0YABA9S5c2elp6crKytLc+bMkSTl5eUpOTlZgwcPVlpamlJTU7V8+XJfNB8AAJxjfBJoNm/erOeff1633nqrGjRooFGjRmnt2rVavHixCgoKNH36dLVo0UKTJ0/WrFmzJEmpqalq1KiRxo8fr/j4eE2YMMGqAwAAFzZ/X5y0f//+Xus//fST4uPjtX79eiUlJSkkJESS1LFjR2VlZUmS1q9fr169esnhcEiSunbtqjFjxtR4Do/HI4/HY6273e7TfRkAAOAc4fNBwaWlpfrb3/6me+65R263W3FxcVadw+GQ0+lUfn5+lbqwsDDt2rWrxuM+99xzCg8Pt5amTZue0esAAAC+4/NAM3HiRNWqVUsjRoyQv7+/AgMDveqDgoJUVFRUpe5IeU3Gjh2rgoICa9m5c+cZuwYAAOBbPnnkdMSyZcv0yiuv6Pvvv1dAQIAiIyOVmZnptU1hYaFcLpciIyOVl5dXpbwmgYGBVcIRAAA4P/mshyY7O1uDBw/WK6+8orZt20qSEhMTlZaW5rWNx+NRZGRklbq1a9eqcePGZ73dAADg3OOTQFNcXKz+/ftr4MCBuuGGG3Tw4EEdPHhQ3bt3l9vt1uzZsyVJkydPVu/eveV0OpWcnKzVq1fr66+/VllZmaZMmaK+ffv6ovkAAOAc45NHTkuWLFFWVpaysrL01ltvWeXZ2dmaOXOmBg8erJSUFPn5+WnFihWSpKioKM2YMUPXXXedQkNDFRERYc1RAwAALmw+CTQDBw70mgH4aLGxsdq2bZsyMjKUlJSkunXrWnX33HOP+vbtqy1btqh79+4KDQ09W00GAADnMJ8OCq5JdHS0+vXrV21dXFyc1+vbAAAAPn9tGwAA4I8i0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANsj0AAAANvz93UDAACnLrbkn75uAs6i7b5uwDmMHhoAAGB7Pg00e/fuVVxcnLZv326VZWZmKjExUXXq1FFKSoqMMVbdypUrlZCQoKioKE2fPt0HLQYAAOcinwWavXv3qn///l5hxuPxaMCAAercubPS09OVlZWlOXPmSJLy8vKUnJyswYMHKy0tTampqVq+fLlvGg8AAM4pPgs0gwYN0pAhQ7zKFi9erIKCAk2fPl0tWrTQ5MmTNWvWLElSamqqGjVqpPHjxys+Pl4TJkyw6gAAwIXNZ4Hmrbfe0oMPPuhVtn79eiUlJSkkJESS1LFjR2VlZVl1vXr1ksPhkCR17dpVGRkZNR7f4/HI7XZ7LQAA4Pzks0ATFxdXpcztdnuVOxwOOZ1O5efnV6kLCwvTrl27ajz+c889p/DwcGtp2rTp6b0AAABwzjin3nLy9/dXYGCgV1lQUJCKioqq1B0pr8nYsWNVUFBgLTt37jxj7QYAAL51Ts1DExkZqczMTK+ywsJCuVwuRUZGKi8vr0p5TQIDA6uEIwAAcH46p3poEhMTlZaWZq1nZ2fL4/EoMjKySt3atWvVuHFjXzQTAACcY86pQNOjRw+53W7Nnj1bkjR58mT17t1bTqdTycnJWr16tb7++muVlZVpypQp6tu3r49bDAAAzgXn1CMnf39/zZw5U4MHD1ZKSor8/Py0YsUKSVJUVJRmzJih6667TqGhoYqIiLDmqAEAABc2nweao2cClqTk5GRt27ZNGRkZSkpKUt26da26e+65R3379tWWLVvUvXt3hYaGnu3mAgCAc5DPA011oqOj1a9fv2rr4uLiqn3lGwAAXLjOqTE0AAAAp4JAAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbI9AAwAAbM92gSYzM1OJiYmqU6eOUlJSZIzxdZMAAICP2SrQeDweDRgwQJ07d1Z6erqysrI0Z84cXzcLAAD4mK0CzeLFi1VQUKDp06erRYsWmjx5smbNmuXrZgEAAB/z93UDTsb69euVlJSkkJAQSVLHjh2VlZVV7bYej0cej8daLygokCS53e4z39BzTKWnyNdNwFl0IX7GL2T8fF9YLsSf7yPXfLwhJrYKNG63W3Fxcda6w+GQ0+lUfn6+6tSp47Xtc889pyeffLLKMZo2bXrG2wn4UviLvm4BgDPlQv75LiwsVHh4eI31tgo0/v7+CgwM9CoLCgpSUVFRlUAzduxYPfLII9Z6ZWWl9u/fr7p168rhcJyV9sJ33G63mjZtqp07dyosLMzXzQFwGvHzfWExxqiwsFCNGjU65na2CjSRkZHKzMz0KissLJTL5aqybWBgYJXwExERcSabh3NQWFgY/8MDzlP8fF84jtUzc4StBgUnJiYqLS3NWs/OzpbH41FkZKQPWwUAAHzNVoGmR48ecrvdmj17tiRp8uTJ6t27t5xOp49bBgAAfMlWj5z8/f01c+ZMDR48WCkpKfLz89OKFSt83SycgwIDAzVx4sQqjx0B2B8/36iOw9hwqt3du3crIyNDSUlJqlu3rq+bAwAAfMyWgQYAAOBothpDAwAAUB0CDQAAsD0CDQDAVvbu3au4uDht377d103BOYRAg/NOZmamEhMTVadOHaWkpBz3+z8A2MfevXvVv39/wgyqINDgvOLxeDRgwAB17txZ6enpysrK0pw5c3zdLACnyaBBgzRkyBBfNwPnIN5ywnnlo48+0p///Gf9+uuvCgkJ0fr163Xffffp22+/9XXTAJwG2dnZiouLk8PhUHZ2tmJjY33dJJwj6KHBeWX9+vVKSkpSSEiIJKljx47KysrycasAnC5xcXG+bgLOUQQanFfcbrfX//AcDoecTqfy8/N92CoAwJlGoMF5xd/fv8p06EFBQSoqKvJRiwAAZwOBBueVyMhI5eXleZUVFhbK5XL5qEUAgLOBQIPzSmJiotLS0qz17OxseTweRUZG+rBVAIAzjUCD80qPHj3kdrs1e/ZsSdLkyZPVu3dvOZ1OH7cMAHAm8do2zjuffPKJBg8erODgYPn5+WnFihVq27atr5sFADiDCDQ4L+3evVsZGRlKSkpS3bp1fd0cAMAZRqABAAC2xxgaAABgewQaAABgewQaAABgewQaAABgewQaAABgewQawMeKi4tVXl5+0vud7hcUS0tL//AxPB6Ppk2bdtztKioqTvn7tSorK09pPzs41c+CdHo/D9OnT5fH4zltxwPOBgINcJaNGTNGjzzyiLU+YMAALViwoMbt58yZoxtvvFFLly7Vm2++KUnKzMxU27ZtVVJSUu0+/fv318yZMyUdDhlHQsCQIUP04osvSjocKsrKyiRJeXl5io+P1/r16yVJ8+fPV1BQkGJjY72WoKAgvfbaazW2ddSoUdUGlZKSEjkcDrndbklSWlqaLrnkkhqPc0RsbKzWrl2rBx54QPv27ZMkDR48WP/7v/973H19YciQIXrmmWdOePuT/SxIp/Z5OFmHDh3Sfffdd1qOBZwtBBrgLLjmmmvUoEEDxcbG6vXXX9esWbOskPDdd9/poYceUmxsrKKiojRy5EhJ0o4dO5STk6Pi4mI5nU7Vq1dPn376qQoLC7Vo0SINGzZMQUFBkqr+6zw8PNz61vE+ffqoffv2at++vRYvXqypU6eqffv2ateunSZMmCBJqlevnvr376/BgweruLhYgYGB6tKli7Zv3+61dOnSpcq3mR+xbNky7dixwzrmN998o4iICDVr1kxt2rSRJHXo0EGxsbG69dZblZ2drdjYWDVp0kS1a9fWjh07JElut1u//PKLcnNz5XQ65fF4FBERoc8//1ylpaVas2aNbr31Vuu8J9ozYYzRwIEDNWfOnBPa/kSUlJR4nT8gIMDr/pSVlam4uNhrn1P5LEh/7PNQk/fff18xMTFq1KiR5s+fb5WPHz9e2dnZ+uabb07pvgA+YQCcVWPHjjWPPPKItX7VVVeZf/7zn1W2S0pKMm3atDFNmjQxERERJiEhwbRo0cKkpaWZDh06GD8/P+N0Oo3T6TRHfpQrKirMrFmzzB133GEef/xx87//+7/mk08+MWPHjjUTJ040F110kenXr5+ZMGGC+etf/2q2b99una+oqMg0bdrUpKammoULF5pu3bpVaVO3bt3M7Nmzq72u7t27m7Vr11Zb5/F4jCTjdruNMcasWrXKtGrVqtpt58+fb+Lj401CQoJxuVwmPj7etG7d2tx2223m/fffN5Ks6/bz8zMTJ06s9jhHKy8vNyNHjjSSamz/ySovLzfR0dGmadOmJiYmxsTExJhatWqZOnXqWOuNGzc2V199dY3HONHPgjGn9nk4lo0bNxqXy2Xeeusts2HDBtOyZUuzZcsWq/7HH380vXr1Ook7AvgWPTTAWVBQUKDJkyervLxc0dHRuueee6y6YcOG6dJLL1VaWprXuIUlS5Zo8+bNmjp1qgYOHKhNmzYpIyNDeXl5Cg0NVUVFhTZu3KjOnTtbjxp27typZ555Rg6HQ8HBwRo3bpyaNGmiq666Stdcc40aN26sdu3a6ZprrlGfPn0UEhJi/Ws+ODhYq1ev1pAhQ445TsVU86//3377TQcOHNDFF1/sVf7OO+/oxx9/1P79+zV58mTVrl1bklS/fn2NHz9eJSUl+uGHH7z2GTRokDIyMpSVlaW4uDgtWbJEaWlpmj9/vp5//nl9+eWXKi8v10033aRPP/1U48aN07Rp0xQREVFlGTRokCTp6aef1qFDh3TZZZedxN/asTmdTuXm5uqXX36xerBuvvlmjRs3zlr/9ddftWTJEq/9TuWzIJ3a5yEqKqra+7Ju3TrNnDlTvXr10ogRI9ShQwfdf//9mjdvnnW+Sy65RHv37tWePXtO2z0DziR/XzcAuBBUVFToxx9/VIcOHeRyudS/f3+r7o033lBUVJRSU1Plcrk0d+5cSYcfTRw9vuLDDz/UM888o/3791tftpmTk6NWrVpZjzk2bNigrl27SpJiYmK0dOlSJScny+Vyyc/v8L9fduzYoc8//1yVlZUqLy/X6tWrVa9ePUlS06ZNJR174G1FRUWVsszMTCUmJlYpr127tvr376+QkBDdfffdVnl2drZefPFFtW/fXtddd52++eYbtWvXTpL01Vdf6a9//avS09MlHQ5QV1xxhWJjY5Wenq7w8HDr2lu3bi2Xy6W77rpLN998c5Xzh4SESJKGDx+uuLg4XXHFFTVe18kqKSlRYGCgHA7HMbcrKytTWVmZ1ZZT+SxIp/Z5yMjIqDaANmrUSOvXr9e1115rlXXt2lVPPfWU13aJiYnKzMzUlVdeeaK3BfAZAg1wFjidTgUEBOjXX3/Vk08+qaZNm1q/EJ1Op4KCgvTGG2/ogQceUGFhoWrXrq2JEyfqwQcf1MSJE/Xxxx/ru+++03PPPadly5bp448/ljFGmzdvVnx8vHWejRs36rLLLtPatWslSW3bttWSJUuqHUQbEhKicePGeZWVlpYqJydH/v7++vXXX+V0OtWoUSO53W45HA5FRETI5XJVOdaePXvUoEGDKuUBAQEKCAhQUVGR7r//fhUVFcnlclnXfPHFF+uZZ57R1q1b1bZtWzkcDvXu3VshISF67733JEm33nqrGjZsqH79+ungwYNKS0vTpZdeqm3btik2NlbS4TFDR4JOdeLi4o7/l3QSDh06pPj4eAUEBFiBJj8/3xr0PGPGDAUEBEg6HGgaNmxoBbRT+SxIOqXPQ0xMTI3X4Ha7ve5LWFiYdu3a5bVN/fr16aGBffjyeRdwISgpKTGdOnUyU6ZMMUuXLjWtWrUyCxYsMNHR0aZZs2bG6XSaqKgoExMTY5o2bWoefPBBa9+ff/7Z3HLLLSYmJsaEhYWZrVu3GmOM6dGjh1m3bp257bbbzCeffFLlnMOHDzfz5s0zxhjzzTffmPbt25vly5dbywcffGAaNmxYZb8ZM2aYP/3pT8YYYyorK43L5TK5ubnmscceO+ZYlY8//tg88MADXmXz5s0zl112mdmyZYvp2bOnSU1NNZdeeqlp3LixqVu3rvH397fGmkRHR5tffvnF2nf37t3m66+/NqGhoSY2Ntbcfffdxhhjli1bZq6//nqzefNm06lTpxP8G/g/PXv2PG1jaI6Wl5dnmjVrZuLj4029evXMyJEjq93uj3wWjDn1z0N1unbtaj7++GOvY7ds2dJrm/vvv998+umnJ3MrAJ+hhwY4wwIDA7VmzRq53W4NGDBAe/bsUY8ePZSbm6tDhw4pMjJSI0eO1LPPPuu137///W/dcccd8vPz0xVXXKHo6Gj16dNHa9as0cCBAzV37lwtW7ZMr7/++jHPHxQUpP/+97+6//77rbLy8vIqPS0FBQV69tln9e6770qScnNzJR0eh3E8MTEx2rZtm1fZsGHDNGTIEKWmpuqnn37St99+q++//16S9MQTT2jatGnKzMxUaGio134lJSWaMWOG5s2bp4CAAL399tu66aabFB8frwceeED/3//3/2nu3Lnq1auXtc+0adOqfV36mmuusa7nTCkuLtZtt92mW2+9VXl5eWrZsqVSU1M1ffp0r0dE0ql/FqRT+zxERUVVO6/NihUrFBkZqby8PKussLCwymdi27Ztatas2R+9RcBZwaBg4CxYt26devTooQcffFAdOnRQTk6OpMPzvXTr1k2pqak6ePCgtf17772nnj17KiUlxXoNevLkyWrVqpUWLVqkO+64Q6+99pouu+wyRUREHPPcDodDl1xyiTIzM61lxYoVVbZ76qmn1LVrV1111VWSDr/S27VrV/n7H//fPR07dtSWLVu8rsHj8Wj8+PGaOXOm3nzzTeuay8vLlZqaqp49e+qNN97wOk5ZWZkuv/xyrVq1ShkZGapfv76aNm2q9957T7NmzZKfn59uvvlmvfDCCxo6dKi131133aV169ZVWf7xj38ct+2SdODAAe3du/ekJ+07cOCArr32WgUGBlohJCgoSAsWLNBzzz2nMWPGVBnce7KfBenUPw8ZGRnV3pe2bdsqMTFRaWlp1rZr165V48aNrfWDBw/q559/VocOHU7qngA+4+suIuB8d/DgQdOzZ0+zatUqY4wx7dq1M1u2bDFut9s0b97cpKWlmVGjRpk///nPprKy0hhz+DXn1atXG2MOv8Y8fPhwY8zhRxbGGPP222+boKAg06JFC5OTk1PlnEc/clqzZo0JCQkx7dq1s5Y2bdqYmJgYa/v169eboKAgs2nTJmOMMXv27DExMTHWMY5+5PTdd9+Z119/vco5J06caCZNmmStv/XWW2bEiBGmpKTELFiwwAwaNMgYY8zLL79srrnmGpOdnW2io6PNhg0bvI6TlpZmiouLjTHGtG7d2mRnZ1vXvn//fnPppZcaf39/89xzz53A3fdW0yOndu3aGUnWuU7El19+aZo1a2YGDhxotXf48OFm6tSpxhhj1q5da5o3b25atGhhnn/+eZObm3tKnwVj/vjnoTrr1q0ztWrVMhs2bDCFhYXm4osvNtOmTbPqJ02aZJ5++ukTvh+ArxFogLMoLS3NNGzY0BQVFZn+/fub++67zxhjjNvtNm3atDEjRowwHo/H2v7tt982/fv3t8an5OTkmLvvvtvUqVPHrFmzxtx9992mSZMmZuHChV7nufXWW82cOXOMMcb88MMPVeaUORJYjpg+fbq59957jTHGZGVlmQ4dOph+/fpZv1Qff/xxq/7pp5+udn6SQ4cOmbZt25o1a9Z4lZeXl5sBAwaYl19+2SxbtszUq1fP/Pzzz8YYY958801Tr14988MPP3jts3HjRjNjxgwTEhJi9u3bZyorK82CBQtMy5YtzR133GHWrl1r6tWrZ/7yl7+Y3Nzc49/4/+d0BZrffvvNdOzY0Tz77LNewWPIkCHmhRdesNYLCwvNE088Ybp3724KCgq8jnGynwVjTv3zUJNx48YZl8tlwsLCTOfOnU1RUZExxpj09HTTvn17K6gBdkCgAc6C3Nxc069fPxMdHW0WL15sLrvsMnPFFVd4/cL69ddfTUJCgklJSbHKBg0aZNq0aWO+//57Y8zh3o1LLrnEbNy40drm6aefNpdeeqnXL59bbrnFzJ071xhjzIoVK6oEmquvvtr6BXpEZWWleffdd43D4TDDhw/3Ot6qVatM8+bNrQGrX3zxRbXXuWHDBnPNNddY6y+//LJp3ry5uemmm8z7779vQkJCqgwynTp1qqlbt67ZuXOnVZaZmWnCw8PNiBEjjDGHw1LLli3Nk08+acrLy40xxmzdutW0a9fOvP/++9W25WRUVlaaRo0amcLCwhPe50g7jtavXz+vXqrqnOpnwZhT/zwcy6ZNm8ySJUu8zt+vXz+vYwJ24DDmNH/DHYBqffTRR7rqqqtUu3Ztpaenq2PHjlUGYbrdbgUGBtb49QKlpaVyOBzWK8FHeDyeGvc5GR6PR+vXr7fmsjkVlZWV1pw3R74b6qKLLlJxcbE2b96sTp06VdknLy/PmgunJocOHVKtWrWqtPd0XPfkyZNVWlqqSZMm/eFjnYjT8VmQztzn4ei/Q8AuCDQALnilpaXVzq8DwD4INAAAwPboUwQAALZHoAEAALZHoAEAALZHoAEAALZHoAEAALZHoAEAALZHoAEAALb3/wNiKblvOLU1jgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 各性别获救情况\n",
    "plt.figure()\n",
    " \n",
    "survived_m = data_train.loc[data_train.Sex == 'male']['Survived'].value_counts()\n",
    "survived_w = women_sur = data_train.loc[data_train.Sex == 'female']['Survived'].value_counts()\n",
    "df = pd.DataFrame({'男性':survived_m,'女性':survived_w})\n",
    "df.plot(kind='bar',stacked=True)\n",
    "plt.title('按性别看获救情况')\n",
    "plt.xticks(rotation=0)\n",
    "plt.xlabel('获救情况(获救=1，未获救=0)')\n",
    "plt.ylabel('人数')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "8bc046ce-2cdb-4b6e-a80d-7a20ab3ef317",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 各等级客舱获救情况\n",
    "plt.figure()\n",
    " \n",
    "survived_0 = data_train.loc[data_train.Survived == 0]['Pclass'].value_counts()\n",
    "survived_1 = data_train.loc[data_train.Survived == 1]['Pclass'].value_counts()\n",
    "df = pd.DataFrame({'获救':survived_1,'未获救':survived_0})\n",
    "df.plot(kind='bar',stacked=True,)\n",
    "plt.title('各等级客舱获救情况')\n",
    "plt.xticks(rotation=0)\n",
    "plt.xlabel('客舱等级(高等舱=1，中等舱=2，低等舱=3)')\n",
    "plt.ylabel('人数')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "cf5c7dce-d322-407c-84bd-81ac3ea992cc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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/fGPf1R6ero+//xzXXXVVa7X/Pz8tHbtWuXn56tDhw5KSkpScXGxrr76aq1fv15/+9vftH79ev3xj39U9+7ddfr0aT3wwAO6/vrr9d577+nf//53he4cAACoOm677TYlJydLkjZv3qy2bdsqNDRUs2bN8mxhAACYqFwhPD8/X3379lVYWJhSUlIUGhpaqk1wcLC++eYbjRgxQsnJycrLy9Pbb7+tXr166e2339a3336rxYsX69FHH1WHDh0UGBiozZs367XXXlPv3r312muvVdjOAQCAqmHRokX64osvJEk5OTkaOHCg4uPjlZKSokWLFmnjxo0erhAAAHNYDMMwyrPC8ePHLxi+L6SkpEReXl6aPXu2brzxRsXExLheW7Zsma6++mp1797dtex8sG/VqlV5SnLjcDgUGBgou92ugICAy94OgBrKYvF0BSiL8nVNVV5t75t+/fVXtWvXTkFBQXryySd16tQpvfXWW0pPT5fFYtGKFSu0fPlyffDBB2XaXo39efL5VD3UsM+nGovjqeqrYcdSefqmcofwqq7GdswAKgadcvVQs7qmWt83jRkzRn5+fjpz5ox69eqlzZs3q06dOpo3b54k6ciRI7rlllu0e/fuC67vdDrldDpd8w6HQ+Hh4TXv58nnU/VQwz6faiyOp6qvhh1L5enrL3t0dAAAgN+zceNGrV+/XjNmzHAtczgcioyMdM0HBAQoOzv7otuYPn26AgMDXVN4eHil1gwAQGUihAMAgEpx9uxZ3X///frHP/6hevXquZbbbDb5+vq65v38/JSfn3/R7UyZMkV2u901HTp0qFLrBgCgMtk8XQAAAKiZnn/+ecXExKhfv35uy4ODg5WTk+Oaz83NveRjSn19fd1COwAA1RkhHAAAVIrFixcrJydHQUFBks49ZWXZsmWSpG7durnabdu2TVdffbUnSgQAwHSEcAAAUCm+/vprFRUVueYnT56s2NhYjR49WuHh4Vq3bp169uypGTNmqE+fPh6sFAAA8xDCAQBApWjatKnbfN26dRUaGqrQ0FDNnj1bffv2Vd26dRUUFKTk5GTPFAkAgMl4RBmA2oVHllQPNatrom+6iMzMTO3Zs0c33XST6tatW+b1auzPk8+n6qGGfT7VWBxPVV8NO5bK0zdxJhwAAHhEZGSk26PKAACoDXhEGQAAAAAAJiGEAwAAAABg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5ZdfXJ2+zWbTE088oaefflqSlJSUpDfeeENPPPGEhg0bppSUFEnS7t271apVKw/8NIDKZbVa5e3traysLI0aNUrh4eE6e/asDMOQ1WqVn5+f3nrrLUlSbm6uJGnq1Kn661//KsMwtGLFCk2ZMkV/+9vf1L9/f+3cuVOGYXDMAPhd9PeAOejrazkDuAw//fST0ahRI6NZs2ZGgwYNjMTExFJtjh8/brRp08ZISkoykpKSjFtvvdWYNWuW0bhxY6NZs2aGJCMsLMxo3ry50bRpU2PGjBmudYuKioxdu3YZPXr0MCIiIozw8HDj2LFjhmEYRmRkpHHixAmjS5cuxo4dO0zbZ8AMZ8+eNa6//npjxowZxvr1643WrVsby5cvN8LCwoxmzZoZVqvVCA0NNZo3b26Eh4cbEydOdK27b98+48477zSaN29uBAQEGD/99JNhGIbRo0cP48cffzTuuusuY+XKlZ7aNQDVEP09UPHo68HAbCi3EydOqFevXho/fryWL1+uu+66S88995xef/113XnnnW5tS0pKlJWVpSFDhigzM1MnTpyQxWLRvn371KpVK82fP1/33XdfqfdYs2aN7rvvPtWrV0933XWX9u7dq4yMDH311Vf6y1/+ovr162v+/PnKzs52u+QNqAlKSkrkcDg0YMAApaWlae/evWrYsKFOnz6t4OBgTZ48WS+++KLbOt99953uueceeXl5qXPnzgoLC9PSpUv1/fff67333lNWVpY++OAD/fTTTwoKCvLMjgGoVujvgcpDX1+7cTk6yiUrK0s9e/ZUbGysHnzwQUlSgwYNtHjxYt17772aPXu2SkpKXO03bNig3r17a86cOapbt65rlNPk5GT16dNHc+fOdWsvSa+++qqGDx+ut956S6NGjZIkLVy4UIWFhUpJSdF9992n559/Xn/605/okFEj/fjjj+rRo4cmTpyo9u3b6/Dhw5KkJUuWqHv37lq0aJHy8vJc7ZctW6aePXsqISFBzzzzjKRz92C2bt1aq1ev1j333KN//OMf6tq1K50ygDKhvwcqF319LefpU/GoHkpKSozFixcbwcHBxvjx443i4mLDMAyjZ8+exvLlyw3DMIx169YZDRs2NDp06GD8/e9/N/bv32/ceOONxq5duwzDMIyAgAAjPz/fOHz4sNGwYUNj//79xu23325MmzbN7b2OHz/u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IlyTxWJRkyZNXPN169bV5MmTS63btm1b/fTTT6WWx8XF6d133y1XHVfC4yF837592rdvn2699VZJUnBwsHJyclyv5+bmXvIyD19fXwUEBLhNtUF1O1h+68SJE3r++ed1+vTpMrWvKgcLAAAAUNN4e3tfMm+dPXtWo0aN0rFjx7R8+XJZrVZ16tRJXbp00bhx43Tw4EH985//VKNGjdSmTRu1bNlSP/zwgySpe/fumjNnjtatW6eIiAhNmDDBtd3PPvtMHTt21AcffFCuen19fRUbG6v9+/e7JklavXq1a37YsGEX3CdfX1/XWftt27apW7duks7d733+nm8zePxy9GXLlql///6uSwJiYmK0ePFi1+vbtm3T1VdfXel1mHkJWEVcxlSWg2X06NGug+W5557Tddddp5KSEl1//fWug2XmzJkKCgpScXGxli1bpuuvv17du3dXWlqaJCkiIkJ9+/bVvHnzJLkfLOPGjbus2j///HO1bdtWXbt2LVP7/z1YHnzwQX377bemHywAAADApZh9W0l5c8Unn3yiRx991G3Z8ePHZbPZ9P7777st//LLL9W6dWsdPXpUDRo00I4dO9SkSRO99NJLuvvuuzVq1Ci1b99ec+fOlZ+fn9599139/PPPeuGFF1zb+OWXX5SamqrQ0FB9/vnnWrVqlSQpNTVVJ06c0LJly9S7d2/dddddCgwMLNM+eHl5acuWLYqIiHBb3rdvX1c+On78uNt+Op1OeXt7y8vLSxs3bpRhGNq1a5eCg4MlSVar1TXCvdPplI+PT6XeauDxEP75559r9OjRrvmBAwfqwQcf1Lp169SzZ0/NmDFDffr08VyBVUB1P1hKSkpksVhc/5H/9a9/6e67775key8vryp3sAAAAADVmdPpVFBQkH788UfXspEjR6ply5Z69tlnXct++zd1RESE3njjDd166606fPiwfHx8tHTpUu3bt0/79+9XcnKyJOn06dMaNWqU2/vZbDbt2bNHf/3rXzVlyhTZbDYVFhZqwoQJSkxMdD2eesSIEfrkk0/KfK92bGysNm3a5Fbv6tWrdd1110mSW76Uzj2J6+jRo5KkH374QWlpafLy8tLmzZsVGhqq3NxcbdiwQffff7+cTqcyMjLUqFGjMtVyOTwaws+cOaP//Oc/mj9/vmtZaGioZs+erb59+6pu3boKCgpy/WJrq+p+sLz//vsaP36865sph8Oh9evXuy6HNwxDp0+f1lVXXaXi4mL95S9/0TPPPFPlDhYAAACgOivP88z/t+3atWvd5nv16qWHHnpIw4YNu+R2rrnmGuXk5OjUqVMyDEMPPPCAoqKiNGDAAEnS7Nmz1blzZ/Xs2VMbN2783UHaSkpKylT/b9vt27fPFdDj4+P1l7/8RQ6HQ1988YW6deumwYMHa+TIkb+7LxXFoyG8Tp06Fxzga/z48erTp4/27Nmjm266SXXr1vVAdVVHdT9YRo0a5Qr6H374oZ555hmlp6e7Xv/iiy80cuRIHT161O15e1XtYAEAAACqs8u5atTpdMpms5XpudglJSU6e/asfH193caQSk9P1+eff64zZ87IbrcrKChIcXFxrteHDBmi8PDwMo2SHhAQILvdrhtuuEGSlJ+fr1atWmns2LFudURHR7vmt23bpvj4eElSeHi4Xn31VcXHxys2Nvb3fwCVwOOXo19MZGSkIiMjPV1GlVATDpbz3n33XU2cONFt2ZdffqnBgweXqrWqHSwAAABAdVbWs8i/bTtx4kStXr36grli8uTJmjx5sg4cOKCrr75aVqtVTqdTn332mZ577jllZGSoV69estlsOn36tPr166dly5bpxhtv1MMPP6zmzZvr448/ltVqdRu07VKGDx+u4cOHu+bHjx+vrKws1y20F9K7d2916NDBNX/ttddq0aJFKigocHu8WklJiZxOZ6WPO1VlQzj+n5pwsEjnQv3atWv19ttvu5YVFhZq+fLlSkpKKtW+qh0sAAAAQHXm5eWlI0eOuA1qdn6sqd/eAhwSEuLKFW+99ZYMw7joicGioiJ5e3vrm2++cdvuihUr1LJlSyUlJSkvL092u12ff/656/UOHTrommuu0ZYtW3TixIky1f/LL78oMjLSbYDqM2fOSJKCgoLc2losFh06dEh169Z1u4X3fNvCwkKFhISoTp06rttcx40bp4CAANeI65WFEF4NVPeD5bzCwkLdfvvtateuneLj4zVhwgRt2bJFTZs21R//+MdS7avawQIAAABUZ8OGDSt1K+eFxpr6X5MnT9b777+vOnXqXDRfdO3aVQUFBXr55Zddl4bn5ubKz89Po0ePdhsI+rwbb7xRqampWrRoUZnqb9iwoU6ePOl2JW7r1q01c+ZM122zkvTvf/9b/fr1u+Rtzbfccovrkcm16p5wlE11P1jO69Chgz7++GMdPnxYf//739WtWzcVFBTomWeeKfM2PHmwAAAAALXRzJkzNXPmTM2aNUsWi0WPPfaY67XzJ/dSUlLcTu6dOnVK+fn5iomJ0YgRI1xnrH9r3rx5CgoKksVi0apVq9S/f/9L1mGxWNwC+IcffqhffvlFN998s1u7o0ePqnnz5pe5t5Wv7CN+odqZOXOmjh07pkceeUSPPPKI2wPt9+3bJ0lKSUnRiRMnXAG8rAfL3r17FRMTc8l7Ly7m6quv1oABA9SgQQMNHjxYr7/+urp3767169df2Q4DAAAAKJfi4uIy3/46aNAgPffcc9qyZYtr2fm88L8DRG/ZskXt27eXJCUkJOjXX3+VzXbuHLDNZtOJEycUHR2tZs2aacOGDXrttdfKXHNGRoaeeOIJjRo1Sm+++WapM96pqamKiooqtV5RUZGKiopUXFysgoKCC267qKhIhYWFZa7lcnAmvJoq78Fyww03qGvXrq5Bzcp6sMyfP7/UwdK9e3dJ5wZZ++CDD373G6vz9e7evVtfffWVli1bpoMHD+qVV17R0KFDdebMGb322msaMmSIunTpovfee0+NGzd2rfvbg6W4uNjtHpDftjEMo8zPFgQAAAAqmjHV8HQJ5Zabm3vRQPq/oqKitH79ete4TY8//rj+9a9/qWnTpgoLC3Nru3TpUt1xxx2SpN27d+upp57SggULJElDhw7V4MGDXY8XPnbsmN58883fff8tW7borrvu0smTJzVs2DB9//33ateunev1HTt26E9/+pMOHDhwwat2CwsLdfbsWa1bt04jR46Uj4+P64rhrVu36tFHH1VhYaFGjhypmTNnlulncjkI4f+/6nbAVKeDRZLuvfdebdiwQd26ddMjjzyi/v37uwJznTp19OSTT+r//u//lJiYqNDQULd1q8rBAgAAANQ05b2y9frrr3f9+7777tOwYcPUqVOnUifKnnrqKddgaZ07d9aJEydUr149SdLDDz+shx9+uNy1xsbGatGiRYqJibngE5qio6M1b948dejQQSEhIaVet9vtkqQ//OEPysnJKff7VxSLYRjVK33+DofDocDAQNntdgUEBLi9dvbsWWVmZioyMtJtdO3aZs+ePTp58uQFD5aff/5ZQUFBatCggQzDUF5enutguRKXGiSusvF7x29Z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+uuu+ejoaP3nP/+55DrPPvusJk2apCVLluiTTz6RJH322We65ZZb+KBBrfDkk09q0qRJrvkBAwZo+fLlF22fnJysO+64Q+vXr9f8+fMlSWlpaWrXrp3Onj1b6fUCqJno74HKQ19f+xDCUWYlJSVyOp1unaG3t7fb4xIKCgrcDv527dqpSZMmioiI0KpVqzRt2jRFREQoIiJCBw8e1NChQ9W8eXOFhITohRdecK333//+V9nZ2SooKJAkNWnSREuXLlVRUZFWr16te++9VxaLRRLf+qHmue2229SoUSNFRETozTff1MKFC13HzbfffqtHHnlEERERCg0N1bhx4yRJBw4c0OHDh3XmzBlZrVY1aNBAn376qXJzc7V69WqNHDlSfn5+kjhmAFwa/T1Q+ejrazdGR0eZZWZmqnv37vL29nZ1iEePHlVAQID8/f0lSYWFhbrtttu0cOHCUuuPGDFCXbt21cMPPyxJatmypd5//3117drVrV1xcbFatmwpPz8//frrrzIMQyEhISooKNDatWvVuXNnnTp1ytU+PDxcmZmZlbTXgGc99dRTcjqdmjlzpiQpLi5O9957r+Lj493ade3aVadOnVJeXp7y8vLUuHFjFRQU6IMPPtC4ceO0a9cu13FbXFxM5wzgoujvAXPR19c+nAlHmUVGRio7O1sHDhzQ/v37tX//fsXGxmrevHmu+cOHD7t1yAcPHtScOXNkGIbatWunu+66y/XaI488oqioKH311VduHxJWq1U7duzQ7t279dhjj2nChAnatm2bdu3apc8++0y9e/dWUVGRPv30Uw0dOlR79uwx9ecAVDa73a7ExEQVFRUpLCxM48ePd702cuRIdenSRSkpKXI6na7lX375pXbv3q1XXnlFgwYN0q5du5SamqqcnBzVrVtXxcXF2rlzpzp16sSlagAuif4eqHz09bUbIRxlUlJS4rpU7PcUFBTozJkzkiSLxaJPPvlE1157rTZs2OD6dk6SEhMTdfToUU2ZMkXPPvusa3lRUZGuu+46fffdd65lc+fO1W233aann35agYGBkqTDhw+rdevWbpfHATVBcXGxfvjhB7Vv314LFy6U1Wp1vfbWW28pPT1dr7/+uuvyNOncZW3/+te/XPMfffSRevXqpYceeohjBkCZ0d8D5qCvr90I4SiTn376SZGRka57VSIiInTVVVdp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4XrmmWdUXFxcqe9ps9kUEBBQqe8BAADOoa8HajZCOFDNhIeHy8vLSy+88IKKiorUsWNHrVixotSlXvv375fFYnHN9+rVS8nJyZo1a5aaN2+u1atXS5ISExM1cuRIV7u0tDSFhISoqKjItexCl6j93nqff/652rdvr6CgII0dO1ZOp9PV9vnnn1fDhg3VunVrbdu2rUJ+LgAA1BT09UDNRggHqpmGDRvq/fff16uvvqqWLVvq/fffL/O6b731ltauXau33npLXbp0kSQNHTpUX375pQzDkCStWbNGgwYNks1mu+S2LrXevn37NGjQID3yyCP6/vvv9d133+mVV16RJK1cuVKzZ8/Whx9+qOTkZH3wwQeX82MAAKDGoq8HajZCOFANDRs2TAcOHNDo0aM1btw4JSQklGm9vLw8rVixQrfddptCQkIkSW3atFHDhg21detWSee+1R46dOjvbutS6y1dulTXXXedxo4dq1atWmnChAlauXKlJOnjjz/WiBEj1KNHD3Xr1k333ntvufcfAICajr4eqLkI4UA1k52drYyMDAUGBurZZ5/VmjVrNHPmTB08eNCtXX5+fql1x48fLx8fn1LLhw0bpjVr1uj06dPauXOnbr311jLVcrH1srKytG3bNgUFBSkoKEiTJ0921XfkyBE1a9bMtY2oqKgy7zsAALUBfT1Qs136GhQAVc7SpUu1cuVKbdy4UZLUo0cP2Ww2GYahkpISV7vU1NRS61511VUX3ObQoUM1btw4dezYUb17975g512e9Zo2baoBAwZo5syZkqTi4mLXHwoNGzZUdna2axv/+wcFAAC1HX09ULNxJhyoZuLi4vTtt99qyZIlOnz4sJ599lk1btxYXbt2VXp6uhwOh3JycjRjxowyb7N9+/ay2+1atGiRhg0bdsXrDR8+XF9//bV+/vln+fr66o033tCYMWMkSQMHDtSiRYv07bff6j//+Y/efvvtsu88AAC1AH09ULMRwoFqpn379kpKStLUqVPVpk0bbdy4UStWrFBcXJx69+6t9u3bq1+/fnrqqafKtd3Bgwdr1apV6tOnzxWvFxUVpffee0+TJk1Sy5YttWPHDi1ZskTSuW/U77//fg0aNEijRo3SoEGDyvV+AADUdPT1QM1mMc4PdwgAAAAAACoVZ8IBAAAAADAJIRwAAAAAAJMQwgEAAAAAMAkhHAAAAAAAkxDCAQAAAAAwic3TBVS0kpISZWdnq169erJYLJ4uBwAAGYah3NxcNWnSRF5efP99pejrAQBVTXn6+hoXwrOzsxUeHu7pMgAAKOXQoUNq2rSpp8uo9ujrAQBVVVn6+hoXwuvVqyfp3M4HBAR4uBoAACSHw6Hw8HBXH4UrQ18PAKhqytPX17gQfv6ytICAADpmAECVwqXTFYO+HgBQVZWlr+fGNAAAAAAATEIIBwAAAADAJIRwAAAAAABMUuPuCS8LwzBUVFSk4uJiT5cCE3h7e8tqtXq6DACo0U6dOqW9e/eqdevWql+/vqfLAQBTFBcXq7Cw0NNlwARWq1U2m61CxnepdSG8oKBAR44cUX5+vqdLgUksFouaNm2qunXreroUAKiRli9frvvuu0/h4eH673//q+TkZN15551KS0vTmDFjtG/fPo0dO1YzZsxw/fGyefNmjR8/Xjk5OXrqqac0adIkD+8FAJRPXl6esrKyZBiGp0uBSfz9/dW4cWP5+Phc0XZqVQgvKSlRZmamrFarmjRpIh8fH0aqreEMw1BOTo6ysrLUqlUrzogDQAWz2+2aMGGCvvrqK0VHRys5OVkJCQkaOHCgBgwYoD59+uif//ynJk6cqOTkZI0ZM0Y5OTkaOHCgHn/8ccXHx2v48OHq2LGjbr75Zk/vDgCUSXFxsbKysuTv768GDRqQKWo4wzBUUFCgnJwcZWZmqlWrVvLyuvw7u2tVCC8oKFBJSYnCw8Pl7+/v6XJgkgYNGmj//v0qLCwkhANABXM4HJozZ46io6MlSddff71OnDihNWvWyG63a9asWfL391diYqIefPBBjRkzRosWLVKTJk309NNPy2Kx6JlnntHChQsJ4QCqjcLCQhmGoQYNGqhOnTqeLgcmqFOnjry9vXXgwAEVFBTIz8/vsrdVKwdmu5JvLVD98M0kAFSe8PBw3X333ZLO/VE6e/ZsDRkyRNu3b1dsbKzrS+/o6Gilp6dLkrZv366bb77Z9fncuXNnpaamXvQ9nE6nHA6H2wQAVQF/Z9YuFZUja9WZ8OpsR9apy1rvxPEcBQbVl83m/qt2nj0r30t8e5Px0x7lnz6t9h07uS0/cviQ9u7aqW49/ygfX9/LqkmS5s2crri+A9S67R9+t+2xo0dUPyRU3t7el/VeRlGBjp08o7EfbdLh3ModjG//S/0qdfu4chFPfubpElAGHEvVz/bt23XLLbfIx8dHu3fv1vPPP6/IyEjX6xaLRVarVSdPnpTD4VC7du1crwUEBCg7O/ui254+fbqmTZtWqfVXBXw+VQ98PqG2OnbsmIKDg0vlirNnz17yrHB6erry8vLUuXNnt+UHDx7Ujz/+qD59+sj3CnJFeWRnZ6tBgwaXnSsqCqeEq6lJ4+7R7MSpl2xT4HTq3jv7a8EbM13LCgsKVFxcrJED45T0j9cuuu4Xn358wde/+PRjPT5+tIpLLj/Mnjr5q+a/9orOlHFwvCG3dNGB/+4rtXxc/GCtXL7ksusAAFSc6Ohoffnll2rVqpXGjh0rm81W6o8qPz8/5efnl3rt/PKLmTJliux2u2s6dOhQpe0HANQ2Q4cO1RNPPHHJNk6nUz179tSLL77oWlbw/+eKLl26aMaMGRddd+nSpXr55ZcvuHzYsGHlfmLVG2+8IT8/P0VERLgmi8WiJk2auObr1q2ryZMnl1q3bdu2+umnn0otj4uL07vvvluuOq6Ex0J4cnKyLBZLqSk5OVmbN29W27ZtFRoaqlmzZnmqxCrNZrPJ2/vio/I5z57V3x57QL8ez9GXqz5Rx+YhGt63l+4eGKfnnnhUR7Kz9PnKj3Rzx9Ya2DNG/W+8Xrt3bpckjRrSR4sW/kP/+WaTbu8arRefety13a/Xf6lrro3WZx8tu+za/71pnSJbtVGHTp1/v7Ekbx9f+fqe+3Ztd9oO3TO4tyTJ18/vkmfzAQDmsVgs6tSpk95991199NFHCg4OVk5Ojlub3Nxc+fj4lHrt/PKL8fX1VUBAgNsEAKgY3t7el/wMPnv2rEaNGqVjx45p+fLlslqt6tSpk7p06aJx48bp4MGD+uc//6lGjRqpTZs2atmypX744QdJUvfu3TVnzhytW7dOERERmjBhgmu7n332mTp27KgPPvigXPX6+voqNjZW+/fvd02StHr1atf8sGHDLrhPvr6+rrP227ZtU7du3SSdu9/bzHv7PXY5+ogRIzR48GDXfF5enjp27Ki2bduqd+/epo+YauYlYOW9jOmTTz7Rgw9PdFt28tdfZbNZ9dlHS92W/2PRR4po0VLHc46pfkioln/5jRqGNdY7c2er75A79bfHJqjVNe301AuvyNfPTyuXL9HBzAw99Je/ubZxIidHSz7bpKDgEP170zp9tf4LSVL6jh916uSveuUfSRp/9x3qM2CI6gUE/m79JSUlri9ZJGnd6k/Vb/CwS7b38vJSgdMpm7e3vLy89H3K1zIMQxk/7VZA0Lnnz1q9rK77MgqcTnkz2j0AmG7z5s1atWqVXnnlFUlyPXmkbdu2evvtt13tMjMz5XQ6FRwcrJiYGC1evNj12rZt23T11VebXjsAVDSzbyu5nFzx6KOPui07fvy4bDab3n//fbflX375pVq3bq2jR4+qQYMG2rFjh5o0aaKXXnpJd999t0aNGqX27dtr7ty58vPz07vvvquff/5ZL7zwgmsbv/zyi1JTUxUaGqrPP/9cq1atkiSlpqbqxIkTWrZsmXr37q277rpLgYG/nyukc/dlb9myRREREW7L+/bt6wrex48fd9tPp9Mp7/8/V2zcuFGGYWjXrl0KDg6WdO4Z4OdzhdPprPSnaHkshPv4+Lh9OzFv3jwNGTJEKSkpjJj6P5xOp+oFBGrZF1+7lk2ZOE7NIlrogUlPupZ1CK/v+vfV4c005fkZun/EEB07ekTe3t764tOPdXB/prKzDmrl8nN//JzJz9eAYfFu72e12ZSZ8ZP+fv8L+vODj8lmtamwsFAv/nWyHn7iabVo1UZde9yiKQ/fp9kLFv3uPRWr/rVUL0yZJG+fc+3ycnP13b83K/nN1yWdG/L/TH6+6vj7q7i4RKMfmKjxj/5FS99bqOM5v0iSdu/crn17d8ti8VLqlm/VMzpKp0/n6btvv9bzTz6mgoICffbNDwpp0PAKftIAgPJq3bq15s+fr1atWun222/X3/72N/Xu3Vt9+/bV2LFjlZSUpDFjxigxMVFxcXGyWq0aOHCgHnzwQa1bt049e/bUjBkz1KdPH0/vCgDUeE6nU0FBQfrxxx9dy0aOHKmWLVvq2WefdS37bQCNiIjQG2+8oVtvvVWHDx+Wj4+Pli5dqn379mn//v1KTk6WJP1/7d19XFR13v/x9zAjICkgkKJJQoiWXaK7LobdoLWkbiBkWon507wyo7asTLZsLa12wXUTq13dTFnZTLustrJNaTXvagsrWFaFUVu58L4bNWRAcAA5vz+8nG0CDRXmcPN6Ph7n8ejczueYZ76+55zz/Z44cUKTJk1y+zybzaZdu3bp17/+tWbOnCmb7XSueOCBB5Senu66ATt+/Hi9++67jX5XOzY2Vps3b3ard+3atRo4cKAk6e6773bbftGiRfr6668lSf/85z9VWFgoLy8vbdmyRSEhISovL9fGjRt13333yel0qri4WN26dWtULReiRXTMdvLkSb344ov67LPP9Mwzz9TrMfWJJ544675Op1NOp9M13xZ7TD2fXvi8LO7bLl75jtv8Pbcnatzd9+rmhORzHiciso9Kjx1TuaNMhgz99snHFNYrXMNu/oUkKW32b3XXqHjdc3uClq762zk7aUu6PUVJt58O+uvXrNai+Rl6Z+NW1/pPNm/Qrx++Txv+udttCLEDe/9Xfa/uL0n6RfIYLUifo4qKcv3ptbc08GfX6JF77lLCbXf86LkAAJpP9+7d9dZbb+mRRx7RjBkzNGLECL366quy2WxaunSpUlJSlJaWJi8vL9c/mEJCQrRgwQLdcsst6tSpkwIDA13/iAMANJ/zyhU/2Hb9+vVu88OGDdODDz6osWPP/oSrJF155ZU6cuSIjh8/LsMwdP/99ysyMlKjRo2SJC1YsECDBw/W0KFDtWnTph/tpK2urq5R9X9/uz179rgCekpKin71q1/J4XDo73//u6699lrdeuutmjBhwo+eS1NpESF85cqVuuaaaxQeHk6PqQ24kEchqp1OWW22Ro2LXVdXJ6fzpLy9fVT3vY4R3t64VZ9s/lDOkydVUe1QZ/8ATU251bX+ppEJCu1+2Xn1kv7eW68rZfJUt2W5H23SjSMS6tW6q2i7RiaPkSR169FT02c9qycenKLon8Y0+vMAAM3v5ptvVlFRUb3lSUlJKi4uVn5+vmJjYxUcHOxal5qaqhEjRmjXrl264YYb1KlTJ0+WDADt0oXkCqfTKdt55IqTJ0/Kx8fHrcM1u92uDz74QFVVVSorK1NgYKDi4+Nd60ePHq2wsLBG9ZLu7++vsrIy/exnP5MkVVZWujoF/X4d0dHRrvmCggKlpJy+KRgWFqbnn39eKSkpio2N/fE/gGbQIkL4yy+/7Hr84UJ6TJ0+fbpr3uFwKCwsrNlqNUNjf+2RpDrj9LZzZz+uf2xc3+DFkvmbp5T5m6d0+OABdQ3tIavVS9XV1fpj9iotfmGeDu4r0T13jJLNZlVVZaVuuGm4fv+nZZp020il3D1VPXqGacMH78vqZdWdk6bUO/7ZFH+5S1s/3qzZv/tPr+s1NTVav+ZdPTt/Yb3th8TdpL79/jOEWWSfq5Tx0iuqqa5265Ctrq5O1U6nfD3YmQIAoHFCQ0OVkNDwO4sRERFuw5gBAJrXeeWK/9t22rRpWrt2bYO5YsaMGZoxY4b27dunyy67TFarVU6nU2vWrNGzzz6r4uJiDRs2TDabTSdOnFBCQoLeeOMNXX/99XrooYfUq1cvvfPOO7JarW6dtp3LuHHjNG7cONd8amqqDh486HrfvCHDhw/XgAEDXPNXX321VqxYoerqarfh1U7fnHQ2eydtpofwPXv2aM+ePbr55psl6YJ6TPXUuHJm8fLy0pFvv9Evhvzn15wzHbOdebdbkgK7BMn4v4vl6bkvyDCMs/7aVVtbq0ERlyr77RxdFna5a/mLf16pxOt/qmfn/1GVlSdU7nDo080bXOv79vsvRfTuo+3/zNPx0u/O6zxqa2t03bB4jb4pVr9IHqM7Jt6j7QV56ta9h665fmi97b//vrsk+QcEqKa2VnHRkfL19XW9E/7s44+oU+fOysndfl71AAAAAO2Jl5eXvvrqK7dOzc50zPb914KCg4NdIXzx4sU/mis6dOigf/zjH27HXb16tXr37q1ly5apoqJCZWVl+uCDD1zrBwwYoCuvvFJbt27VsWPHGlX/N998o4iICLd8WFVVJUkKDAx029ZisejAgQPq1KmT2/vuZ7atqalRcHCwOnbs6HonfOrUqfL393f1uN5cTA/hb7zxhhITE10v4dNjan1jx45Vn9h4t2UNdcz2Q/Ofe0rvv71Kvr6+Z71oJt46XDXV1XrkyTm6LWWiJOnEiQp5+/jqqem/1INpv663z6TbRmrn9m1K/8Mr53Ueffv11wtLX9M3Xx3W//xliSaNHqGa6hrd90hao49xzXVx+uzLQ5LEO+EAAADAeRg7dmy9954b6pjth2bMmKHly5erY8eOZ80VQ4YMUXV1tX73u9+5Hg0vLy+Xr6+v7r77brde08+4/vrrlZ+frxUrVjSq/q5du6q0tNTtJmyfPn00f/581zvmkvTJJ58oISHhnK863XTTTTpx4oQktb93wj/44AO33uvoMbXpzHj6N5rx9G/06isLZbFY9P/u/c8jHmfuhL/67jq3O+GOsjKdrKrSfw38qX5x61idPHmy3nF//dvn1dk/QBaLRVs+/EBD40eeV13duvfQ0PiRWv/+al094CdauewVfbTh73rgsScbvCMOAAAAwDzz58/X/PnzlZmZKYvFokcffdS17syd8NzcXLc74cePH1dlZaViYmI0fvx41x3r71u0aJECAwNlsVj0/vvvKzEx8Zx1WCwWtwD+1ltv6Ztvvqk3ktbXX3+tXr16XeDZNr/Gd4/XDKqqqvTZZ5+5BkmX3HtM7datm3bv3q1Zs2ad4yjtU92pU41+p+PG4bdo8YvztP2fX7iWOU+evgi8vNx/ydrxzy8UdeVVkqS7Ux+S43iprLbTv9XYrDYdL/1Ofa76L3W/LEyff/KxVv55caNqOHXqlP69y65Vf1mqe25P1JMP36dHnpyj3y3M0pp/FCgufqQevff/6b7xo3Xkm6/d962tPT2dOqWa6uoGj19bW6uamppG1QIAAADgtFPnkSuSk5P17LPPauvW/4x0dCZc/7A39a1bt6p//9MjHaWlpem7776T7UyusNl07NgxRUdH6/LLL9fGjRv14osvqrGKi4v1+OOPa9KkSXr55Zfr3fHOz89XZGRkvf1qa2tV+3+5otrEXGHqnfCOHTu6DS92hhk9pp7vQPdmO3GiQjU1Df/F+aGw8AgteX21+vxfJ2fPPztLG3LeU7fuPRRyqfv4dx/87R39fOTpRzn+d8+Xemnec5oz7/R43j+/JUmPTpmgoJBLJUnfHTuqWRmZjaphzoyH9PmnH2nAoMEa/9+piosf4XoFwbdjR93zy0eVeNudyvpjpgKDgt32ra2tkdN5Uls/3qxfP3yfbB28XY/BFG3/l+bNeVK1tTVKGH2HZjxd/zEXAAAAwBNaW6aQTj8yfrZA+kORkZHasGGDq5Ozxx57TH/961/Vs2dPhYaGum27atUq3XbbbZKknTt36sknn9TSpUslSWPGjNGtt97qGov722+/1csvv/yjn79161bdeeedKi0t1dixY/XFF1+4jay1fft23XHHHdq3b1+Dj7jX1NTo5MmT+vDDDzVhwgR5e/8nV+Tl5emRRx5RTU2NJkyYoPnz5zfqz+RCWAzDMJrt6CZwOBwKCAhQWVmZ/P393dadPHlSJSUlioiIcOsFrzXYfvB4kx2rZM+XcpQdV7/+A9XhB53e7SspVmf/AAUFh8gwDFWeqNAlnTpf9GeeqzOH5mbUVuvbwwc1Z9O3OlR+6sd3uAit8Yu3vQl/Yo3ZJaAR2tq1dK62Ceevrf558v3UOrS17ydcmNacK5rSrl27VFpaqkGDBtXrTPvf//63AgMDdemll8owDFVUVKhz54vPFf/4xz8UExNz1s65N27cqAEDBrgNi9lUzvX//XzaJtPfCYfnRfTuc9Z1vSL+89iGxWJpkgB+5lgAAAAA2o4rr7zyrOuioqJc/22xWJokgEunO3M7l5tuuqlJPqc5mfpOOAAAAAAA7QkhHAAAAAAAD2mXIbyNvQaPRqrjfzsAAACaELmifWmq/9/tKoSf6Y27srLS5ErgScapWp2qq9OJ6sYNvQAAAACci9VqlaRG9yqOtuFMjjyTKy9Uu+qYzWq1KjAwUN9++60kyc/Pr9V0GGbUcoFfEMNQlaNU278+qfJqfqkEAADAxbPZbPLz89ORI0fUoUOHemNko20xDEOVlZX69ttvFRgY6PoR5kK1qxAuyTV+3Zkg3lp8W1pldgmtlKHSylr9T2G5iOAAAABoChaLRd27d1dJSYn27dtndjnwkMDAwHrjoV+IdhfCz1wwXbt2VU1NjdnlNNqUtzebXUKrdKpOOlp5SrUkcAAAADQhb29vRUVF8Uh6O9GhQ4eLvgN+RrsL4WdYrdYm+0P0hEPlp8wuAQAAAMD3eHl5ydfX1+wy0Mrw8gIAAAAAAB5CCAcAAAAAwEMI4QAAAAAAeAghHAAAAAAADyGEAwAAAADgIYRwAAAAAAA8hBAOAAAAAICHEMIBAAAAAPCQFhHCH3/8cY0aNco1X1hYqJiYGHXp0kVpaWkyDMPE6gAAwLmsXr1aV1xxhWw2mwYOHKidO3dKkqZNmyaLxeKaevfu7dqHth4A0F6ZHsK3b9+uRYsW6cUXX5QkOZ1OjRo1SoMGDVJeXp7sdruys7PNLRIAADSouLhYkydP1ty5c3Xo0CH16dNHU6ZMkSTl5eVpzZo1Ki0tVWlpqQoKCiTR1gMA2jdTQ3hdXZ2mTp2qRx99VFdccYUkKScnR2VlZcrMzFRkZKTS09OVlZVlZpkAAOAsdu7cqblz5+qOO+5Qt27ddP/996ugoEC1tbUqKipSXFycAgMDFRgYqM6dO0uirQcAtG+mhvCXX35ZO3bsUHh4uN577z1VV1dr27Ztio2NlZ+fnyQpOjpadrv9rMdwOp1yOBxuEwAA8IzExERNnTrVNb97925FRUVpx44dqqur08CBA9WxY0eNHDlS+/fvlyTaegBAu2ZaCK+oqNDs2bN1xRVXaN++fVqwYIGuv/56ORwORUREuLazWCyyWq0qLS1t8DgZGRkKCAhwTWFhYZ46BQAA8D3V1dWaP3++UlNTZbfb1bdvXy1fvlzbt2+XzWZzhXXaegBAe2Yz64PffvttnThxQps2bVJISIhqa2vVv39//fnPf9bkyZPdtvX19VVlZaW6dOlS7zgzZ87U9OnTXfMOh4PGGQAAE8yePVuXXHKJpkyZog4dOuiuu+5yrVu0aJEiIiLkcDhks9nk4+Pjti9tPQCgvTAthB88eFCxsbEKCQk5XYjNpujoaO3atUtHjhxx27a8vFze3t4NHsfHx6deQw4AADxr48aNWrhwobZu3aoOHTrUW9+1a1fV1dXpq6++UlBQkAoLC93W09YDANoL0x5H79mzp6qqqtyW7du3Ty+88IJyc3Ndy0pKSuR0OhUUFOTpEgEAQCOUlJQoJSVFCxcuVL9+/SRJaWlpWrlypWub3NxceXl5KSwsTDExMbT1AIB2y7QQnpCQILvdrpdfflkHDx7USy+9pG3btum2226Tw+HQsmXLJEnp6emKj4+X1Wo1q1QAAHAWVVVVSkxMVHJyskaPHq2KigpVVFQoOjpas2bN0oYNG7Ru3TqlpqZq4sSJ8vPzU1xcHG09AKDdMu1x9ODgYK1du1YzZszQ9OnT1b17d73xxhsKCwvT0qVLlZKSorS0NHl5eWnz5s1mlQkAAM5h3bp1stvtstvtWrJkiWt5SUmJ7rzzTo0ZM0ZWq1UTJkxQenq6pNOvoNHWAwDaK9NCuCRdd911bo+jnZGUlKTi4mLl5+crNjZWwcHBJlQHAAB+THJysgzDaHBdRkaGMjIyGlxHWw8AaK9MDeHnEhoaqoSEBLPLAAAAzYS2HgDQHpn2TjgAAAAAAO0NIRwAAAAAAA8hhAMAAAAA4CGEcAAAAAAAPIQQDgAAAACAhxDCAQAAAADwEEI4AAAAAAAeQggHAAAAAMBDCOEAAAAAAHgIIRwAAAAAAA8hhAMAAAAA4CGEcAAAAAAAPIQQDgAAAACAhxDCAQAAAADwEEI4AAAAAAAeQggHAAAAAMBDCOEAAAAAAHgIIRwAAAAAAA8xNYRPmzZNFovFNfXu3VuSVFhYqJiYGHXp0kVpaWkyDMPMMgEAAAAAaBKmhvC8vDytWbNGpaWlKi0tVUFBgZxOp0aNGqVBgwYpLy9Pdrtd2dnZZpYJAAAAAECTMC2E19bWqqioSHFxcQoMDFRgYKA6d+6snJwclZWVKTMzU5GRkUpPT1dWVpZZZQIAAAAA0GRMC+E7duxQXV2dBg4cqI4dO2rkyJHav3+/tm3bptjYWPn5+UmSoqOjZbfbz3ocp9Mph8PhNgEAAAAA0BKZFsLtdrv69u2r5cuXa/v27bLZbJo6daocDociIiJc21ksFlmtVpWWljZ4nIyMDAUEBLimsLAwT50CAAAAAADnxbQQftdddykvL09DhgxRVFSUFi1apPXr16uurk4+Pj5u2/r6+qqysrLB48ycOVNlZWWu6cCBA54oHwAAAACA89Zihijr2rWr6urqFBoaqiNHjritKy8vl7e3d4P7+fj4yN/f320CAACes3r1al1xxRWy2WwaOHCgdu7cKenco51s2bJFV111lUJCQpSZmWlW6QAAeJxpITwtLU0rV650zefm5srLy0v9+/dXbm6ua3lJSYmcTqeCgoLMKBMAAJxDcXGxJk+erLlz5+rQoUPq06ePpkyZcs7RTo4cOaKkpCSlpKQoNzdXK1as0KZNm8w9EQAAPMS0ED5gwADNmjVLGzZs0Lp165SamqqJEydq+PDhcjgcWrZsmSQpPT1d8fHxslqtZpUKAADOYufOnZo7d67uuOMOdevWTffff78KCgrOOdrJihUr1KNHDz311FOKiorS008/zUgoAIB2w2bWB0+YMEFFRUUaM2aMrFarJkyYoPT0dNlsNi1dulQpKSlKS0uTl5eXNm/ebFaZAADgHBITE93md+/eraioqHOOdrJt2zbdeOONslgskqTBgwfriSeeOOtnOJ1OOZ1O1zwjoQAAWjNT3wnPyMjQ8ePHdezYMb344ou65JJLJElJSUkqLi7WX/7yF+3cuVP9+vUzs0wAANAI1dXVmj9/vlJTU8852skP1/n7++vw4cNnPS4joQAA2pIW0zHbD4WGhiohIUHBwcFmlwIAABph9uzZuuSSSzRlyhTZbLazjnbyw3XnGgVFYiQUAEDbYtrj6AAAoO3YuHGjFi5cqK1bt6pDhw4KCgpSYWGh2zZnRjsJCgpyGwnlXKOgSKdHQvlhoAcAoLVqsXfCAQBA61BSUqKUlBQtXLjQ9QpZTEzMWUc7+eG6goICXXbZZR6vGwAAMxDCAQDABauqqlJiYqKSk5M1evRoVVRUqKKiQjfccMNZRztJSkrSJ598og8//FA1NTWaN2+eRowYYfKZAADgGTyODgAALti6detkt9tlt9u1ZMkS1/KSkpKzjnYSEhKiBQsW6JZbblGnTp0UGBjoGkMcAIC2jhAOAAAuWHJysgzDaHBdeHi4iouLlZ+fr9jYWLfOVlNTUzVixAjt2rVLN9xwgzp16uSpkgEAMBUhHAAANJszo500JCIiwm2oMgAA2gPeCQcAAAAAwEMI4QAAAAAAeAghHAAAAAAADyGEAwAAAADgIYRwAAAAAAA8hBAOAAAAAICHEMIBAAAAAPAQQjgAAAAAAB5CCAcAAAAAwEMI4QAAAAAAeAghHAAAAAAADyGEAwAAAADgIS0mhI8cOVLZ2dmSpC1btuiqq65SSEiIMjMzzS0MAAAAAIAm0iJC+IoVK/T3v/9dknTkyBElJSUpJSVFubm5WrFihTZt2mRyhQAAAAAAXDzTQ/h3332nxx57TH379pV0OpD36NFDTz31lKKiovT0008rKyvL5CoBAAAAALh4NrMLeOyxxzR69GhVVVVJkrZt26Ybb7xRFotFkjR48GA98cQTZ93f6XTK6XS65h0OR/MWDAAAAADABTL1TvimTZu0YcMGzZs3z7XM4XAoIiLCNe/v76/Dhw+f9RgZGRkKCAhwTWFhYc1aMwAAAAAAF8q0EH7y5Endd999+tOf/qTOnTu7lttsNvn4+LjmfX19VVlZedbjzJw5U2VlZa7pwIEDzVo3AAAAAAAXyrTH0Z977jnFxMQoISHBbXlQUJCOHDnimi8vL5e3t/dZj+Pj4+MW2gEAAAAAaKlMC+ErV67UkSNHFBgYKEmqrKzUG2+8IUm69tprXdsVFBTosssuM6NEAAAAAACalGkh/OOPP1Ztba1rfsaMGYqNjdXdd9+tsLAwffjhhxo6dKjmzZunESNGmFUmAAAAAABNxrQQ3rNnT7f5Tp06KSQkRCEhIVqwYIFuueUWderUSYGBgcrOzjanSAAAAAAAmpDpQ5Sd8f2gnZqaqhEjRmjXrl264YYb1KlTJ/MKAwAAAACgibSYEP5DERERbkOVAQAAAADQ2pk6TjgAAGgbjh49qoiICO3du9e1bNq0abJYLK6pd+/ernWFhYWKiYlRly5dlJaWJsMwTKgaAADPI4QDAICLcvToUSUmJroFcEnKy8vTmjVrVFpaqtLSUhUUFEiSnE6nRo0apUGDBikvL092u53+XwAA7QYhHAAAXJRx48Zp/Pjxbstqa2tVVFSkuLg4BQYGKjAwUJ07d5Yk5eTkqKysTJmZmYqMjFR6erqysrLMKB0AAI8jhAMAgIuyZMkSTZs2zW3Zjh07VFdXp4EDB6pjx44aOXKk9u/fL0natm2bYmNj5efnJ0mKjo6W3W4/6/GdTqccDofbBABAa0UIBwAAF6WhjlTtdrv69u2r5cuXa/v27bLZbJo6daokyeFwuO1jsVhktVpVWlra4PEzMjIUEBDgmsLCwprnRAAA8ABCOAAAaHJ33XWX8vLyNGTIEEVFRWnRokVav369HA6HbDabfHx83Lb39fVVZWVlg8eaOXOmysrKXNOBAwc8cQoAADSLFjtEGQAAaDu6du2quro6ffXVVwoKClJhYaHb+vLycnl7eze4r4+PT73QDgBAa8WdcAAA0OTS0tK0cuVK13xubq68vLwUFhammJgY5ebmutaVlJTI6XQqKCjIjFIBAPAo7oQDAIAmN2DAAM2aNUvdunXTqVOn9NBDD2nixIny8/NTXFycHA6Hli1bpsmTJys9PV3x8fGyWq1mlw0AQLMjhAMAgCY3YcIEFRUVacyYMbJarZowYYLS09MlSTabTUuXLlVKSorS0tLk5eWlzZs3m1swAAAeQggHAABNwjAMt/mMjAxlZGQ0uG1SUpKKi4uVn5+v2NhYBQcHe6JEAABMRwgHAACmCA0NVUJCgtllAADgUXTMBgAAAACAhxDCAQAAAADwEEI4AAAAAAAeQggHAAAAAMBDCOEAAAAAAHiI6SH8+PHj+uyzz1RaWmp2KQAAAAAANCtTQ/ibb76p8PBwTZkyRT179tSbb74pSSosLFRMTIy6dOmitLS0euOOAgAAAADQGpkWwsvKyvTAAw/oo48+0o4dO7Rw4UKlpaXJ6XRq1KhRGjRokPLy8mS325WdnW1WmQAAAAAANBnTQrjD4dALL7yg6OhoSdJPf/pTHTt2TDk5OSorK1NmZqYiIyOVnp6urKwss8oEAAAAAKDJ2Mz64LCwMN11112SpJqaGi1YsECjR4/Wtm3bFBsbKz8/P0lSdHS07Hb7WY/jdDrldDpd8w6Ho3kLBwAAAADgApneMdu2bdsUGhqqDz74QC+99JIcDociIiJc6y0Wi6xW61k7bsvIyFBAQIBrCgsL81TpAAAAAACcF9NDeHR0tNatW6eoqChNmTJFNptNPj4+btv4+vqqsrKywf1nzpypsrIy13TgwAFPlA0AAAAAwHkzPYRbLBYNGjRIf/nLX/T2228rKChIR44ccdumvLxc3t7eDe7v4+Mjf39/twkAAAAAgJbItBC+ZcsWpaWluea9vb1lsVh01VVXKTc317W8pKRETqdTQUFBZpQJAAAAAECTMS2E9+nTR6+88opeeeUVHThwQE8++aSGDx+uW265RQ6HQ8uWLZMkpaenKz4+Xlar1axSAQAAAABoEqaF8O7du+utt97Siy++qKuvvlqVlZV69dVXZbPZtHTpUj344IMKCQnR6tWr9bvf/c6sMgEAAAAAaDKmDVEmSTfffLOKiorqLU9KSlJxcbHy8/MVGxur4OBgE6oDAAAAAKBpmRrCzyU0NFQJCQlmlwEAAAAAQJMxvXd0AAAAAADaC0I4AAAAAAAeQggHAAAAAMBDCOEAAAAAAHgIIRwAAAAAAA8hhAMAAAAA4CGEcAAAcNGOHj2qiIgI7d2717WssLBQMTEx6tKli9LS0mQYhmvdli1bdNVVVykkJESZmZkmVAwAgDkI4QAA4KIcPXpUiYmJbgHc6XRq1KhRGjRokPLy8mS325WdnS1JOnLkiJKSkpSSkqLc3FytWLFCmzZtMqd4AAA8jBAOAAAuyrhx4zR+/Hi3ZTk5OSorK1NmZqYiIyOVnp6urKwsSdKKFSvUo0cPPfXUU4qKitLTTz/tWgcAQFtHCAcAABdlyZIlmjZtmtuybdu2KTY2Vn5+fpKk6Oho2e1217obb7xRFotFkjR48GDl5+ef9fhOp1MOh8NtAgCgtSKEAwCAixIREVFvmcPhcFtusVhktVpVWlpab52/v78OHz581uNnZGQoICDANYWFhTXtCQAA4EGEcAAA0ORsNpt8fHzclvn6+qqysrLeujPLz2bmzJkqKytzTQcOHGi2ugEAaG42swsAAABtT1BQkAoLC92WlZeXy9vbW0FBQTpy5Ei95Wfj4+NTL9ADANBacSccAAA0uZiYGOXm5rrmS0pK5HQ6FRQUVG9dQUGBLrvsMjPKBADA4wjhAACgycXFxcnhcGjZsmWSpPT0dMXHx8tqtSopKUmffPKJPvzwQ9XU1GjevHkaMWKEyRUDAOAZPI4OAACanM1m09KlS5WSkqK0tDR5eXlp8+bNkqSQkBAtWLBAt9xyizp16qTAwEDXGOIAALR1hHAAANAkDMNwm09KSlJxcbHy8/MVGxur4OBg17rU1FSNGDFCu3bt0g033KBOnTp5ulwAAExBCAcAAM0mNDRUCQkJDa6LiIhocHgzAADaMlPfCV+9erWuuOIK2Ww2DRw4UDt37pQkFRYWKiYmRl26dFFaWlq9X9YBAAAAAGiNTAvhxcXFmjx5subOnatDhw6pT58+mjJlipxOp0aNGqVBgwYpLy9Pdrud98QAAAAAAG2CaSF8586dmjt3ru644w5169ZN999/vwoKCpSTk6OysjJlZmYqMjJS6enpysrKMqtMAAAAAACajGnvhCcmJrrN7969W1FRUdq2bZtiY2Pl5+cnSYqOjpbdbj/rcZxOp5xOp2ve4XA0T8EAAAAAAFykFjFOeHV1tebPn6/U1FQ5HA63TlosFousVqtKS0sb3DcjI0MBAQGuKSwszFNlAwAAAABwXlpECJ89e7YuueQSTZkyRTabTT4+Pm7rfX19VVlZ2eC+M2fOVFlZmWs6cOCAJ0oGAAAAAOC8mT5E2caNG7Vw4UJt3bpVHTp0UFBQkAoLC922KS8vl7e3d4P7+/j41AvtAAAAAAC0RKbeCS8pKVFKSooWLlyofv36SZJiYmKUm5vrto3T6VRQUJBZZQIAAAAA0CRMC+FVVVVKTExUcnKyRo8erYqKClVUVOiGG26Qw+HQsmXLJEnp6emKj4+X1Wo1q1QAAAAAAJqEaY+jr1u3Tna7XXa7XUuWLHEtLykp0dKlS5WSkqK0tDR5eXlp8+bNZpUJAAAAAECTMS2EJycnyzCMBteFh4eruLhY+fn5io2NVXBwsIerAwAAAACg6ZneMdvZhIaGKiEhwewyAAAAAABoMi1iiDIAAAAAANoDQjgAAAAAAB5CCAcAAAAAwEMI4QAAAAAAeAghHAAAAAAADyGEAwAAAADgIYRwAAAAAAA8hBAOAAAAAICHEMIBAAAAAPAQQjgAAAAAAB5CCAcAAAAAwEMI4QAAAAAAeAghHAAANJtp06bJYrG4pt69e0uSCgsLFRMToy5duigtLU2GYZhcKQAAnkEIBwAAzSYvL09r1qxRaWmpSktLVVBQIKfTqVGjRmnQoEHKy8uT3W5Xdna22aUCAOARhHAAANAsamtrVVRUpLi4OAUGBiowMFCdO3dWTk6OysrKlJmZqcjISKWnpysrK8vscgEA8AhCOAAAaBY7duxQXV2dBg4cqI4dO2rkyJHav3+/tm3bptjYWPn5+UmSoqOjZbfbz3ocp9Mph8PhNgEA0FoRwgEAQLOw2+3q27evli9fru3bt8tms2nq1KlyOByKiIhwbWexWGS1WlVaWtrgcTIyMhQQEOCawsLCPHUKAAA0OUI4AABoFnfddZfy8vI0ZMgQRUVFadGiRVq/fr3q6urk4+Pjtq2vr68qKysbPM7MmTNVVlbmmg4cOOCJ8gEAaBY2sws4evSoYmJitGnTJoWHh0s63WPq5MmTtWfPHk2ZMkXz5s2TxWIxt1AAAHBRunbtqrq6OoWGhqqwsNBtXXl5uby9vRvcz8fHp15oB4BzCX9ijdkl4EfsnZtgdgmmMfVO+NGjR5WYmKi9e/e6ltFjKgAAbUNaWppWrlzpms/NzZWXl5f69++v3Nxc1/KSkhI5nU4FBQWZUSYAAB5laggfN26cxo8f77aMHlMBAGgbBgwYoFmzZmnDhg1at26dUlNTNXHiRA0fPlwOh0PLli2TJKWnpys+Pl5Wq9XkigEAaH6mPo6+ZMkSRURE6OGHH3Ytu5AeU51Op2ueHlMBAGgZJkyYoKKiIo0ZM0ZWq1UTJkxQenq6bDabli5dqpSUFKWlpcnLy0ubN282u1wAADzC1BD+/Z5RzzhXj6ldunSpt31GRoaeeeaZZq0TAABcmIyMDGVkZNRbnpSUpOLiYuXn5ys2NlbBwcEmVAcAgOe1uN7RbTYbPaYCANAOhIaGKiEhgQAOAGhXTO8d/YeCgoLoMRUAAAAA0Ca1uDvhMTEx9JgKAAAAAGiTWlwIj4uLo8dUAAAAAECb1OIeR6fHVAAAAABAW9UiQrhhGG7z9JgKAAAAAGiLWkQIb8iZHlMBAAAAAGgrWtw74QAAAAAAtFWEcAAAAAAAPIQQDgAAAACAhxDCAQAAAADwEEI4AAAAAAAeQggHAAAAAMBDCOEAAAAAAHgIIRwAAAAAAA8hhAMAAAAA4CGEcAAAAAAAPIQQDgAAAACAhxDCAQAAAADwEEI4AAAAAAAeQggHAAAAAMBDCOEAAAAAAHgIIRwAAAAAAA8hhAMAAAAA4CGEcAAAAAAAPKTFhvDCwkLFxMSoS5cuSktLk2EYZpcEAACaEG09AKA9apEh3Ol0atSoURo0aJDy8vJkt9uVnZ1tdlkAAKCJ0NYDANqrFhnCc3JyVFZWpszMTEVGRio9PV1ZWVlmlwUAAJoIbT0AoL2ymV1AQ7Zt26bY2Fj5+flJkqKjo2W32xvc1ul0yul0uubLysokSQ6Ho/kL9aA6Z6XZJaAR2trfu7aIa6l1aGvX0pnz4XHr/6Ctr4/vp9ahrf29a6u4nlq+tnYtnU9b3yJDuMPhUEREhGveYrHIarWqtLRUXbp0cds2IyNDzzzzTL1jhIWFNXudwA8FvGB2BUDb0FavpfLycgUEBJhdRotAW4/Wqq1+PwGe1lavpca09S0yhNtsNvn4+Lgt8/X1VWVlZb2GeebMmZo+fbprvq6uTt99952Cg4NlsVg8Ui/On8PhUFhYmA4cOCB/f3+zywFaLa6l1sEwDJWXl6tHjx5ml9Ji0Na3fXw/AU2Da6l1OJ+2vkWG8KCgIBUWFrotKy8vl7e3d71tfXx86jXigYGBzVkempC/vz9fJkAT4Fpq+bgD7o62vv3g+wloGlxLLV9j2/oW2TFbTEyMcnNzXfMlJSVyOp0KCgoysSoAANBUaOsBAO1ViwzhcXFxcjgcWrZsmSQpPT1d8fHxslqtJlcGAACaAm09AKC9apGPo9tsNi1dulQpKSlKS0uTl5eXNm/ebHZZaEI+Pj6aPXt2vccLAZwfriW0VrT1bR/fT0DT4FpqeyxGCx4v5euvv1Z+fr5iY2MVHBxsdjkAAKCJ0dYDANqbFh3CAQAAAABoS1rkO+EAAAAAALRFhHCYprKyUnV1dee9Hw9voD2rqqpSbW3tee/HdQPALLT3wPmhrW/7COG4KNdee61ee+21Rm07btw4vfTSS6756OhoffbZZ+fcZ86cOZo+fbpef/11vfvuu5KkNWvW6KabbuKLBu3CE088oenTp7vmR40apTfffPOs22dnZ+u2227Thg0b9Morr0iSCgsL1a9fP508ebLZ6wXQNtHeA82Htr79IYSj0erq6uR0Ot0aww4dOrj11FhdXe128ffr1089evRQeHi43n//fT3zzDMKDw9XeHi49u/frzFjxqhXr14KDg7Wb37zG9d+//u//6vDhw+rurpaktSjRw+tWrVKtbW1Wrt2re655x5ZLBZJ/OqHtmfkyJHq1q2bwsPD9fLLLysrK8t13Xz66ad6+OGHFR4erpCQEE2dOlWStG/fPh06dEhVVVWyWq269NJL9be//U3l5eVau3atJkyYIF9fX0lcMwDOjfYeaH609e0bHbOh0UpKSnTdddepQ4cOrgbx66+/lr+/v/z8/CRJNTU1GjlypLKysurtP378eA0ZMkQPPfSQJKl3795avny5hgwZ4rbdqVOn1Lt3b/n6+uq7776TYRgKDg5WdXW11q9fr8GDB+v48eOu7cPCwlRSUtJMZw2Y68knn5TT6dT8+fMlSfHx8brnnnuUkpLitt2QIUN0/PhxVVRUqKKiQt27d1d1dbVee+01TZ06VUVFRa7r9tSpUzTOAM6K9h7wLNr69oc74Wi0iIgIHT58WPv27dPevXu1d+9excbGatGiRa75Q4cOuTXI+/fv1wsvvCDDMNSvXz/deeedrnUPP/ywIiMj9dFHH7l9SVitVm3fvl07d+7Uo48+qgceeEAFBQUqKirSmjVrNHz4cNXW1upvf/ubxowZo127dnn0zwFobmVlZUpPT1dtba1CQ0OVmprqWjdhwgRdc801ys3NldPpdC1ft26ddu7cqd///vdKTk5WUVGR8vPzdeTIEXXq1EmnTp3Sjh07NGjQIB5VA3BOtPdA86Otb98I4WiUuro616NiP6a6ulpVVVWSJIvFonfffVdXX321Nm7c6Pp1TpLS09P19ddfa+bMmZozZ45reW1trQYOHKjPP//ctWzhwoUaOXKknnrqKQUEBEiSDh06pD59+rg9Hge0BadOndI///lP9e/fX1lZWbJara51ixcvlt1u10svveR6PE06/VjbX//6V9f822+/rWHDhunBBx/kmgHQaLT3gGfQ1rdvhHA0ypdffqmIiAjXuyrh4eG65JJLtGXLFt1+++3q1auXa3lERITGjx8vSbLZbLJarTpw4IDrC+LML3pWq1V+fn56/fXX9c0337gafZvNpscff1xPPfWUJGnZsmX6wx/+oMcff1xjx45Vbm6uJGnnzp2Kiooy4U8DaF5Wq1UdOnTQwYMHNWnSJIWFhenkyZMyDENWq1W+vr5avHixJKm8vFySNHv2bP3617+WYRhavXq1Zs6cqVmzZikxMVE7duyQYRhcMwB+FO094Bm09e2cAVyAL7/80ujWrZtx+eWXG5deeqmRnp5eb5ujR48affv2NZYtW2YsW7bMuPnmm43MzEyje/fuxuWXX25IMkJDQ41evXoZPXv2NObNm+fat7a21igqKjLi4uKM8PBwIywszPj2228NwzCMiIgI49ixY8Y111xjbN++3WPnDHjCyZMnjZ/+9KfGvHnzjA0bNhh9+vQx3nzzTSM0NNS4/PLLDavVaoSEhBi9evUywsLCjGnTprn23bNnj3H77bcbvXr1Mvz9/Y0vv/zSMAzDiIuLM/71r38Zd955p/Hee++ZdWoAWiHae6Dp0daDjtlw3o4dO6Zhw4YpNTVVb775pu688049++yzeumll3T77be7bVtXV6eDBw9q9OjRKikp0bFjx2SxWLRnzx5FRUXplVde0b333lvvM3JycnTvvfeqc+fOuvPOO7V7924VFxfro48+0q9+9St16dJFr7zyig4fPuz2yBvQFtTV1cnhcGjUqFEqLCzU7t271bVrV504cUJBQUGaMWOGfvvb37rt8/nnn2vixIny8vLS4MGDFRoaqlWrVumLL77Qq6++qoMHD+q1117Tl19+qcDAQHNODECrQnsPNB/a+vaNx9FxXg4ePKihQ4cqNjZWv/zlLyVJl156qVauXKl77rlHCxYsUF1dnWv7jRs3avjw4XrhhRfUqVMnVy+n2dnZGjFihBYuXOi2vSQ9//zzGjdunBYvXqxJkyZJkrKyslRTU6Pc3Fzde++9eu6553THHXfQIKNN+te//qW4uDhNmzZN/fv316FDhyRJr7/+uq677jqtWLFCFRUVru3feOMNDR06VGlpaXr66aclnX4Hs0+fPlq7dq0mTpyoP/3pTxoyZAiNMoBGob0HmhdtfTtn9q14tA51dXXGypUrjaCgICM1NdU4deqUYRiGMXToUOPNN980DMMwPvzwQ6Nr167GgAEDjD/+8Y/G3r17jeuvv94oKioyDMMw/P39jcrKSuPQoUNG165djb179xq/+MUvjGeeecbts44ePep67CwjI8OYPXu2YRinH90xDMP47W9/a3To0MEYPHiwUVZW5onTBzymoqLCGDp0qPHxxx8bhmEYV199tbFr1y7D4XAYV1xxhZGbm2vcf//9xn//938bdXV1hmEYhtPpND755BPDMAzj9ddfNyZNmmQYxn+umVdffdXw9fU1IiMjjUOHDnn+pAC0GrT3QPOjrQchHI2ye/duIyoqysjKynJbfu211xqrVq1yzX/77bfGQw89ZCQlJbm+FAzDMN544w3jZz/7mXH8+HHjZz/7mfH73//eMAzDOHDg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",
      "text/plain": [
       "<Figure size 1200x1000 with 6 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 各等级客舱获救性别分布\n",
    "fig = plt.figure(figsize=(12,10))\n",
    " \n",
    "ax1 = plt.subplot(321)\n",
    "f_1 = data_train.Survived[data_train.Pclass == 1][data_train.Sex == 'female'].value_counts().sort_index()\n",
    "f_1.plot(kind='bar',label='female Pclass=1',color='red')\n",
    "ax1.set_ylabel('人数',rotation=0)\n",
    "ax1.set_xticklabels(['未获救','获救'],rotation=0)\n",
    "ax1.legend(['高等舱 女性'],loc='best')\n",
    " \n",
    "ax2 = plt.subplot(322)\n",
    "m_1 = data_train.Survived[data_train.Pclass == 1][data_train.Sex == 'male'].value_counts().sort_index()\n",
    "m_1.plot(kind='bar',label='male Pclass=1',color='red')\n",
    "ax2.set_xticklabels(['未获救','获救'],rotation=0)\n",
    "ax2.legend(['高等舱 男性'],loc='best')\n",
    " \n",
    "ax3 = plt.subplot(323)\n",
    "f_2 = data_train.Survived[data_train.Pclass == 2][data_train.Sex == 'female'].value_counts().sort_index()\n",
    "f_2.plot(kind='bar',label='female Pclass=2',color='green')\n",
    "ax3.set_xticklabels(['未获救','获救'],rotation=0)\n",
    "ax3.legend(['中等舱 女性'],loc='best')\n",
    " \n",
    "ax4 = plt.subplot(324)\n",
    "m_2 = data_train.Survived[data_train.Pclass == 2][data_train.Sex == 'male'].value_counts().sort_index()\n",
    "m_2.plot(kind='bar',label='male Pclass=2',color='green')\n",
    "ax4.set_xticklabels(['未获救','获救'],rotation=0)\n",
    "ax4.legend(['中等舱 男性'],loc='best')\n",
    " \n",
    "ax5 = plt.subplot(325)\n",
    "f_3 = data_train.Survived[data_train.Pclass == 3][data_train.Sex == 'female'].value_counts().sort_index()\n",
    "f_3.plot(kind='bar',label='female Pclass=3')\n",
    "ax5.set_xticklabels(['未获救','获救'],rotation=0)\n",
    "ax5.legend(['中等舱 女性'],loc='upper left')\n",
    " \n",
    "ax6 = plt.subplot(326)\n",
    "m_3 = data_train.Survived[data_train.Pclass == 3][data_train.Sex == 'male'].value_counts().sort_index()\n",
    "m_3.plot(kind='bar',label='male Pclass=3')\n",
    "ax6.set_xticklabels(['未获救','获救'],rotation=0)\n",
    "ax6.legend(['中等舱 男性'],loc='best')\n",
    " \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "23b723ff-821e-48e8-b918-c6044560034f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sex\n",
      "male      577\n",
      "female    314\n",
      "Name: count, dtype: int64\n",
      "Embarked\n",
      "S    646\n",
      "C    168\n",
      "Q     77\n",
      "Name: count, dtype: int64\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(177, 0)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    " # 3、查看并处理年龄(Age)\n",
    "\n",
    "#将Sex进行编码\n",
    "d_t = data_train.drop(['Name','PassengerId','Cabin','Ticket'],axis = 1)\n",
    "print(d_t['Sex'].value_counts())\n",
    "d_t['Sex'] = d_t['Sex'].map({'male':1,'female':0}).astype(int)\n",
    " \n",
    " \n",
    "#对Embarked进行编码\n",
    "embarked_mode = d_t['Embarked'].value_counts().index[0]\n",
    "d_t['Embarked'] = d_t['Embarked'].fillna(embarked_mode)\n",
    "print(d_t['Embarked'].value_counts())\n",
    "d_t['Embarked'] = d_t['Embarked'].map({'S':2,'C':1,'Q':0})\n",
    " \n",
    " \n",
    "# Age特征有177个缺失值\n",
    "d_t.Age.isnull().sum(),d_t.Embarked.isnull().sum()  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "d7c3e778-65d3-4298-8dd2-d4d6d07ef731",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Survived    0\n",
       "Pclass      0\n",
       "Sex         0\n",
       "Age         0\n",
       "SibSp       0\n",
       "Parch       0\n",
       "Fare        0\n",
       "Embarked    0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 填补缺失值\n",
    " \n",
    "##  使用随机森林进行对年龄的预测并填补数据\n",
    "def set_missing_data(df,loc):\n",
    "    #取出已知的数值特征\n",
    "    df_age = df[['Age','Pclass','Sex','SibSp','Parch','Fare','Embarked']]\n",
    "    #将已知年龄和未知年龄数据分开\n",
    "    known_age = df_age[df_age[loc].notnull()].values\n",
    "    unknown_age = df_age[df_age[loc].isnull()].values\n",
    "    #将已知年龄部分定位训练集，分为样本特征和样本标签\n",
    "    y_age_train = known_age[:,0]\n",
    "    x_age_train = known_age[:,1:]\n",
    "    #确定测试集样本特征\n",
    "    x_age_test = unknown_age[:,1:]\n",
    "    \n",
    "    #构建模型\n",
    "    rfr = RandomForestRegressor(random_state=2024,n_jobs=-1,n_estimators=2000)\n",
    "    #拟合模型\n",
    "    rfr.fit(x_age_train,y_age_train)\n",
    "    \n",
    "    #使用模型对测试集标签进行预测\n",
    "    predict_age = rfr.predict(x_age_test).astype(int)\n",
    "    \n",
    "    #将预测结果进行填补\n",
    "    df.loc[df_age[loc].isnull(),loc] = predict_age\n",
    "    \n",
    "    return df\n",
    " \n",
    "d_t1 = set_missing_data(d_t,'Age')\n",
    " \n",
    " \n",
    "#此时我们的数据已经全部补填,并且都是数值型\n",
    "d_t1.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "0a0e56da-95e2-4d5f-aa24-267fbf2295db",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABRYAAAIfCAYAAAAFc4CYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABp5ElEQVR4nO3deXhTZcLG4eekadMNSkEQFBAFRdkqWgQKIygyiiCgDO64jKOy6KcCjiKyCSrFERlRGBBFRBGQMigojoDOMAio4ACCrJWRKptSlqZtkqY93x/YDKUt9EBPkza/+7q4ak5O3q1JffOc5TVM0zQFAAAAAAAAABY4gt0AAAAAAAAAAJUPwSIAAAAAAAAAywgWAQAAAAAAAFhGsAgAAAAAAADAMoJFAAAAAAAAAJYRLAIAAAAAAACwjGARAAAAAAAAgGUEiwAAAAAAAAAsI1gEgCA6dOhQsJsAAAAAlCgnJ0c5OTnBbgaAEEawCMB28+bN09y5cwOPDx8+rIEDB2r37t2nfe2oUaO0adMmSSoyqfnkk0+0fPlyS+347rvvtGbNGkuvkaT09HQtWrRIx44ds/xa6Xh42KxZM2VmZhbZXlBQoK5du+rtt98uUzlHjx5Vbm5u4PG6deu0cuVKy+3ZtGmTbrvtNm3cuNHyawEAAELV5MmT9fDDD1t6TV5enoYPH67t27cHti1dulTPPfdcmV6/adMmjR49WpKUnZ1drD3//e9/LbXnH//4hzIyMiy9Rjre5m+++UYFBQWWXytJb775pgYMGFBs+z//+U917NhR+/fvL1M5J+7n9Xo1f/58/frrr5bbk5qaqqeeeko+n8/yawFULIJFAOUuNzdXOTk5ysvLk9/v1/r167V+/Xr5/f7AvxUrVig7O1t+v18+n0/Hjh1Tfn5+sbKWLFmiw4cP6/nnn9eYMWMC29955x3LodqCBQv02muvFdvu8XhO+bqpU6dq2LBh2rp1q6X6vvjiC23YsEFRUVHKz89XfHy8cnNzAxO+HTt2KDs7u8wTtalTp6pnz57Ky8uTJK1YsUKjR4+W3++31K7PPvtMO3fu1AUXXGDpdQAAAKEsJydHR48ePe1+WVlZ8nq9gTnUggUL9OuvvwbmqRkZGVq3bl3gscfjkdvtLrGsAwcO6LPPPlN2dra6deumtWvXSpL++9//6rXXXtPhw4ct9eHJJ5/UV199VWz7qearhw8f1rPPPqvnnntOXq+3zHX5/X69+eabys7OltPpVFxcnHw+X5G6Nm7cqNzcXB05cuS05fl8PvXt21d//etfJUmGYWjy5MmaPXt2mdskSfn5+fr444+Vn5+vqKgoS68FUPGcwW4AgKpnxowZJQZ4H330UZHHffr0KfL4s88+KxZ2OZ1ORUVFqVu3brr77rv16KOPKjExUZs3b9aQIUNO2Y7CSWPhhMQ0TRmGUSTETEhI0AMPPKDOnTvrwQcfLFbGV199pSVLlqhXr1667LLLSjxrMT8/P3A09dxzzw1sX7p0qS699FJdfPHFkqS2bdvK5/Np6dKlatiwoZYsWaLrrrtO//znP9W7d29deumlpfblyJEjmjdvnu655x5FRkZKkv70pz9p7ty5mj59ugYOHFjsNTk5Ofrpp58UHR0th+P4caSCggKlpaWpa9eucrvdxSbJBQUF8vl8Ouecc1SjRo1S2wMAABBMWVlZioiIUERERLHnTgzX8vLylJeXp8TExMC2Xr166eeffy7ymj/+8Y/FymnevHngv6+44gq9//77xfaJiIhQVFSU4uLi1KlTJ02dOlXt2rXTV199pfr166t169an7Mcvv/yiiIgIOZ3Hv5o7nU75/X4dO3ZMeXl5iouL048//qgBAwZo6tSpatq0abEyJkyYILfbrT//+c+B/p4sLy9PPp9P8fHxqlatmiTJ4XBowoQJuuWWWxQREaFPP/1Un332mVq2bKn33ntP+fn5Wrp0qe655x6NHj1a7733XonjXWjhwoU6dOiQevToIUmKiopS//799dJLL6l379668MILi71m3759ysnJUVRUlAzDkCStXbtWBw4c0I033qiffvqpyP6maSo/P18ej+eUc2cAFccwTdMMdiMAVC1ut1s+ny8wQRg1apT8fr+ef/55ScePqnbp0kVz5szRpZdeqvz8fHm9XtWsWTMwqXE6nXI4HBo6dKgefvhhNWnSRDt37lTXrl21detWjRgxQvPnzw8EZn6/X+edd15goiRJr7zyiv72t7+V2s4uXbrooosu0rvvvqupU6eqffv2RZ7PzMzUzTffrEOHDikuLi6w3ePxyO/3Kz4+XtL/gsUmTZpo4cKFgf2GDRumyy67TH379tXll19e5BIbn8+na665RuPHj9exY8c0efJkffDBB0Xaf6IXXnhBH374oZYtW6bq1asHtr/55pt65ZVXNGfOHLVq1arIa9atW6e77rqr1P6fyosvvqhbbrnljF4LAABgt1tuuUVbtmwp075RUVH67rvvAo8zMzPlcDgUGRkp0zSVnJys119/Xe3atZMkzZo1S0uXLtXcuXNlmmYgqCsMJ/fu3atNmzYpMjJSmzdv1rx58zRu3Dj9+uuvKigo0C233KIBAwaoRo0aRQ7++v3+YsHg1VdfrQMHDpTa9hdffFHTp09XQkJC4OeJlixZoiFDhiguLi5w8Fk6fgudmJiYwAF2n8+nvLw8Pfnkk7r33nsD+1166aVat26dPvzwQ3333XcaP3584Lnly5dr7Nix+vzzz/XQQw/psssu09ChQ0tsp9vtVo8ePdShQ4fAnL+wz3369JHL5dK7775b7AzE4cOHa8GCBaX2/1ROnFsDCB7OWARQ7uLj47V//37VqFFDDodD7dq1U/369QPhnGmaeuGFF3ThhRcqNjY2cHSy0OTJk2UYhgzDkMfj0YIFCxQdHa38/HzVqlVLy5YtU05OTuBoaKG//e1vuuaaawKPBw0apIEDB8rlckmSnn/+ee3cuVNvv/22/H6/3nrrLU2dOlXTp0/XVVddVaQsn8+nxx9/XL/88ov+9re/6eqrrw48l5qaqs2bN5/yso5Dhw7J7/fL4XAE+ldQUCCv1yuXy6WZM2cqMTFRHTt2lGEY+uSTT3TPPffojTfe0DnnnFOkrPXr12v27NkaMWJEkVBRku677z59/vnnGjBggGbNmqUmTZoEnmvdunXgUuyIiAhlZmaqW7duuueeezRo0CC9//77atSoUbFAFQAAINS99dZbcjqdcjqdgbnWpEmT9J///EezZs0K7Of1eovdp69mzZr6+eefdf755ys/P1/9+/dXs2bNAnPVTp066eKLL1ZcXFzgipcTbd++Xa+88oqioqKUk5OjY8eOadKkSTJNUz6fT1deeaXWrl0rv9+vJUuWBF5Xo0aNYpc5f/rpp4qMjAyEgsnJyRoxYoR69eqlw4cPBwLKGTNmBA5qF9q2bZtGjBihxo0ba/78+UWeb9u2rZ566qlSDxTn5eXpyJEjgblqYR8LD5hHRUVp0qRJ6tevnyIiIvTcc8+pd+/ecjqdeuyxx4qNSeFZk48//niR7U6nU6mpqbrttts0dOhQ/eUvfykSLo4cOVKjRo0KnFSwcOFCjRo1SkuWLFFsbKzmzp2rfv36cSUNEMpMALDBbbfdZt53333m119/bbZr185ctGhR4Lldu3aZSUlJ5s6dO82hQ4eas2fPLvLavLy8wH9fddVV5tq1a82CggLT6/Wa27ZtM5s2bWquXLnSNE3TXLFihXnDDTeYPp8v8Lr9+/ebO3bsMH/88UczIyMj8O/pp582b7/9djMjI8OcNGmS2axZM/Pvf/+7mZGRYaanp5s7d+40TdM0vV6v+fDDD5uXXHKJOWvWrGJ9Gz9+vHn33XebBQUFpt/vN71er3ns2DEzPz8/sM/tt99uXn755eYVV1xhXnnlleYVV1xhXn755Wbz5s3NlStXmq1btzaXL19ujhw50ty8ebPpdrvNm2++2bzqqqvM9evXB8o5cuSIed1115n33XefWVBQUOJYZ2Zmmj179jSTk5PNZcuWlfo7eeqpp8xu3bqZXq/XNE3T/MMf/mC+9tprpe4PAABQmbz00kvm7bffftr9du7cabZs2dJ86623zOnTp5vt27c3MzMzi5Rz9913mz///LPZu3dv88cffyxWRuG88/PPPzevueYa0zRNMzc31zTN43PFjh07BuaGjzzyiDlt2jTT4/EEXr9jxw5z165d5p49e4rMV1u3bm3OnDnT3LFjh/mHP/zBvP76681t27aZe/bsMXfu3GkePHjQNE3T3LZtm9m2bVuzXbt25n//+99i7bvqqqvMtLQ0Mz8/38zLyzNzcnJMt9sdeD49Pd1s0aJFsflqUlKSeffdd5vTp083f/e735k7duwwn3jiCbOgoMBcvXq12aJFC/Puu+8u0pfly5ebl1xyifn3v/+91DH/4osvzBYtWph33nmnuW/fvhL3OXTokNm2bVvz9ddfN03z+HeGSy65xNy7d2+p5QIIPs5YBGCLadOm6f7779fdd9+tRx55RL169Qo8FxUVpdzcXLlcLl177bUaOnSomjdvrtatW6ugoEC333677rzzziJHWD/99FNNmzYtcMnKeeedJ+n4DbMbN25c5NKPd999VzNnzlRkZGSx+8Dk5eWpS5cucrlciomJ0bhx4yQdP0OxTp06Wr58uSIjI3XPPfeoffv2ioqKUtOmTYuUU1BQINM0ddlll8k84W4S//rXv1S3bl1JKnIPnh9++EH5+fmBey0+/PDD6tChg7p06aLly5dr4sSJevPNNzVz5kxNnjxZl19+uaTj90gcNGiQvF6v7rvvPu3atStw6ffJnnvuOU2YMEGDBg1St27dNGHChCJHg+fPn6+PPvpIU6dODaxOXVBQII/HU2zxmMI+AAAAhBrTNLVjxw5FRUUVmxcdO3ZMXq9XP/74Y5Htfr9feXl5ql+/vuLj49WkSRNNmzZNf/rTnxQfH6833nijyD0YIyMjVVBQoHr16uncc8/VY489pnnz5gXmVps2bdLjjz+u+fPnF6nnscceU2JiopYsWaJmzZoF2nfgwAH17t07cBWNdPyejkePHlVkZGSRs/8K73tYuPCfYRi66667AvfB7t+/vx555BGdf/75euCBB9SxY0f9+c9/1saNG4uMR35+vp555hkNGzYssK19+/Z6++23JUkXXXRRkcvDV69erVatWik+Pl4HDhzQddddp0mTJqlu3bpatWqVPv74Y/Xo0UPTpk3TgQMHAn3ZsGGDhg4dquuuu06XXnqp0tPTS/y9NWjQQGPHjtWLL76o7t27a8SIEerdu3fg+by8PD322GOqU6eOevXqpf379wcWvsnMzCwyRjExMcUuCQcQPASLAMqd3+/X/PnztXv3btWoUUN169aVz+fT4cOHFRUVpezsbEnH71XYoUMH3XfffXK5XPL7/XI6nerTp49eeOEFdejQQdLxe8esXr1a3bt31yeffKL69etr/fr1aty4sdLT09W4ceMi9Q8ZMqTEhV127Nih/v37q06dOpoyZYpq1qxZYvsNw1BKSopSUlKUlpam888/X59//nng+ZMvhfb7/fJ6vYqNjQ3sc/jwYT399NN6+eWX9e9//1uLFy/WggULNG7cOA0YMCCwSM3AgQM1YcIE+Xw+JSQk6Nlnnw2U8cYbb2jr1q1655131Ldv3xJXzT7RypUrNXv2bMXHxxcJFVesWKHnnntO+fn5euihh4q8ZvPmzZo+fXqRvm/btu2U9QAAAARL4crDLperSJCWm5sbWLTlpptuUkxMTJHX5OXl6Y033lD79u114MABTZ8+Xeecc46ys7PVoEEDHT16VHl5eYqMjFReXp4Mw1BWVpaefvppzZkzR263OzB3bNGiherUqaPnnntON998s3755RdNnjxZGzZs0L333qvzzjtP33//vXJzcxUTE1PifPXf//53if17++23NWHCBD3xxBPq379/qeMQHx8fWHgwMjJSgwYN0qOPPhp4/sRLoc3f7hNZUFBQpIxPPvlEP/zwgx555BFNmDBBffv2VcuWLbV27VrNnz9fl112maTjB8ULxzYlJSXweq/Xq6eeekqtWrXSNddcU+REgpL87ne/U1pamoYNG1bk3uD5+fkaNmyYvv76a0nStddeW+R1J1/Ofcstt+jFF188ZV0AKg7BIoBy98gjj2j//v2aO3eu/vWvf+n999/XhRdeWGwhkRPvkThjxozAqtC33367cnJyAkeX09LSVLduXT3++OMaNGiQZs+era+++kq33nqrvvvuO/Xr16/Utvj9fv3666/6/PPPNWHCBLVr107jxo2T0+kMrPAcGRlZZPJ5olOtfFeo8P4+JzJNU//85z8VGRmpjRs3BkLS+fPnq1+/fvrrX/8auJ9N7dq1AzfK7tevX2DFvP/7v/9T7969dcEFF2j9+vWKiorSn//8Zx09elQzZswI1LVo0SI9++yzqlOnTrEbai9atEjDhw9Xnz59NG/ePKWlpQVW0OvXr586deqkP/3pT5KkL7/8Uo888shp+wsAABAsLpdLmzZtKrJt//79uuWWW1S9enW53W7Fx8crLS1N5557brHX//TTT+rVq5d69eqlKVOm6Oabb9bHH3+srVu3FltEpE2bNoH//u677wJXpDgcDo0ZM0a7d+/WwYMHlZ+fr9dee00DBgzQwIED9cADD+iWW27Rt99+q3r16ik/P18NGjQotU9ZWVnKzMzUyy+/rM8//1yjRo1St27dAnNVSYqNjS023yxU2hUthQzDKLZoinR8Reb09HTl5ORo586d6tixo7Zs2aIvvvhC7du318iRIwN1/vzzz9qyZYsSEhL02GOPSTr+u5g9e7bi4uIUFRWlnj17Kj8/X61bt9bEiRN14403Buq69957Va9ePdWvX7/IfcpzcnL01FNPadWqVerRo4d27dqltLQ0SdKePXvUrVs3rVy5UrVq1ZIkDR06tMiVSgCCj2ARQLkbP3684uPjdejQIc2bN08///yzLrroIq1fv14ul0uffvqphg4dqldffVXXX3994EbXhZMEwzB00UUX6bbbblN2draefvppvfrqqxoxYoTGjRunlJQUTZs2Tfv379d3332ntm3bltqWjz/+WH/+858Dj7/44otAyFeoe/fumjhxYuBxXl5e4OzJsiooKFBeXp5M01R0dHQgkIyIiNDatWu1adMm9e/fXxEREYqMjNQVV1xRJLScM2eOcnNzi5yxaBhG4MzGwuBzx44d+t3vflek7oMHD+rcc88tdhPt9957T88995zuuusuDR48WPPmzVNERESRfjkcjsBjwzAs9RkAACDYcnNz9eijj+qSSy5R8+bN9e233+q8887ToEGD9Pbbbxdb8KR+/fr67LPPVKtWLS1atEg//vij1q5dq5deeknPPvusoqOj9cADD2jz5s1avXq1nE5n4DLkE11wwQVatGiR3n77bdWrV089evTQW2+9pTZt2qhDhw5q3769PvvsM1144YW68sorSz1YnZ2draeeekorVqwIbBs5cqRGjhxZZL8ZM2YUmQPm5uYG5nGnCxYLFR60j4yMlNPpVEREhFwul9asWSPTNDV37lwlJSUpMjJSNWrUUHJycqDdPp9PI0aM0JNPPlmkzDp16hR5vGXLFpmmqUsuuaTI9gMHDhQJaqXjZyred9992rlzp6ZOnapdu3Zp165dgfloYd3MV4HQxicSQLmrUaOGdu3apf79++u+++7TK6+8on379ql58+aSjl+am5CQoE8//VTXX3+9DMMI3KclIyNDL7/8sr744gv9+c9/1quvvqpmzZpp0qRJGjhwoM455xw98cQTatCggQYNGqSWLVuqdu3aRer/z3/+o3/+85/69NNP5fF4JEkffvhh4L6MJxozZkyxo54LFizQ6NGji2xr2rRpsdeWtK1jx4568803ZRiGHA6HvvzyS9WtW1cXXnihpk2bJofDIYfDoZ49ewbCy19++UXDhw/XjBkzTjkx3LNnj3bu3FnsrMQDBw6oXr16xfbv06ePYmNjdfPNNwcuPwcAAKgqjh49qocfflhHjhzRtGnT9NZbb0mSRo8erT/84Q+6//77NX369CL3T5SkWrVq6b333tPUqVM1ePBgffTRR4GDuEePHtW6desUHR2t1atX6+qrr5bD4VB0dHTg9StWrFBqaqpcLpcee+wxzZ8/X0888YT27t2rRx55RO+9955uvfVW3XHHHTrnnHN0//33F6k/OztbK1eu1BdffKEvvvhCLpdLV1xxhaZNm1ZiP9u0aVPsjMN7771XGzduDDxes2aNXnvttSL7DBs2rMg9FgtNnDhR3bt3l3Q8tPvoo480cOBAzZo1SzVq1JDD4VCDBg1Ur169QIg3a9Ys1a9fv9gVSCdbvny5zjnnnGKXfpc0X42IiNCYMWPk9Xp1+eWXa9euXacsG0BoIlgEUK5M09SMGTM0bdo0PfHEE7rrrrv02muvKS8vT9LxcGzZsmV64403NGDAAH3//fdq1qxZ4PUff/yxtmzZovnz56tp06Z69dVXJUmdOnXS6NGjFRcXJ0nq2bOnXnzxRT311FPF2rBu3TqtX79eTz75pBo0aKCePXue8p4vf/jDH4o87tOnj3r27BlY/OXkI8wn32OxsN9+vz9wH0TTNGUYhl599VXdfPPNSkpK0kcffRTYf+XKlZo4caKmT5+ul156SVdffbWSk5NPObYvv/yy6tatW+yMywMHDpS44Ep0dLRuvvnmQHtOpyz7AAAAhILNmzdr6NChys/P18yZM4vcO7tatWp65513dM8996hnz54aMmSIevToIafTqX379mncuHHavn273n77bWVkZATmqZI0e/ZsNWnSRD179tRf//pXdejQochcMCcnR6+99pquuOIKjRkzRqtXr5Z0/Ey6F154QWPHjlWtWrV07rnn6vzzz9eOHTv0+9//vkjbIyIi9O6776pJkyb64IMPNG/evMDZjqU5eT769ttvyzCMwNUwJ1+5cuI9FgsVXmFzYlk7duzQzp07NWrUKOXm5urQoUOB5/785z/rvPPO0/33368pU6YoNTX1lGcLHjhwQO+++67uuOOOIu1xu93Kyckp8UB44X0cC9t3OmXZB0DFIlgEUK4Mw1BCQoImT56s9u3b69ixYzpy5IgSExNVUFCg559/Xtdee61SUlJ011136fHHH9f7778fuG/Kww8/rLvvvrvIZSuFE5O+fftKktavX69p06apYcOGeuONN9SmTRu1bNkysP+DDz4YuJn1jh07JB0/sly/fv1i7X366aeLbYuKiirxPjSn63dkZGTg7MfCSc+oUaN00UUXKT4+Xq1atdKiRYtkmqZ+97vfaeXKlbrllluUlZWljz/+uNSyCwoK9MILL+gf//iHpkyZUmxCt3v37mI3uT7ZyZfvnCgzM1Nz5szR6tWrix3RBwAACCWZmZn629/+pjlz5qht27b6y1/+UuL85dxzz9XcuXM1duxYPfXUU/rLX/6ie+65R/fcc48aNmyo559/XjVq1NCXX34ZeP3u3bsDi6e0a9dOs2fP1osvvljkVjWxsbF65513VK1aNUlFD8xGRUVp7NixKigo0KRJk/TTTz+pZs2aeuaZZzRx4sTAQn/R0dF67733irT3qquuKnLQ+kQlXSVz4qKBZeVwOIqsTF1QUKAmTZpo6NChqlmzpoYOHaoVK1Zo+/btkqQnn3xSf/rTn7Ro0SK1bNlSnTt3LrXsvXv36sEHH1RCQkKxxQJ/+OEHSSrxQPiJTjVfXbNmjdasWaO1a9ee8v7qACoewSKAcnfrrbcG/nvmzJk6//zz1bBhQ6Wmpuo///lP4My9xx9/XF999ZXuuusuvf7662rcuLEMw1B8fLxmz56tTZs26ciRI4HQcffu3XrzzTe1cOFC3X777Ro2bJiGDx+uO+64Q/369dP9999f7D4vhdxud5EbYBc6+ahtWeTn55/27D6/36+CggItXLhQ+/fv1969e7Vv3z5lZWUpPz9fhmHo2WefVY0aNTR37txSj75u2rRJkyZN0po1azRy5MhAgJidna033nhDGRkZ2rVrl5544olTtqekiZppmjJNUzVr1tSHH34oSactBwAAIJji4+Pldrv1+OOP649//GOR28h4PJ7A1SOSlJiYqIkTJ+rOO+/UO++8o27duik6OjpwxYvb7daCBQv0+9//Xr/++qsGDhyoDh06BOZbEyZM0H333Sefz6fhw4cHQrlq1arpl19+0cyZM7V27drAXNU0Ta1YsUJTpkzRf//7X73++uuqW7euHnjgAd1000169NFHddNNN5U49/T7/SXOVc9UQUFBmearhfdEnDJlivbt26f9+/fr8ssvlyTVq1dPc+bM0f3336/q1asrPz+/WNt9Pp8+/PBD/fWvf1VkZKRmzpwZOEHgm2++0cqVK/Wvf/1LiYmJatiw4Snbc/J8tXB+bJqmIiMj9dZbb6l169bFrjYCEFwEiwBs8eabb+rTTz/VDz/8oMmTJ6t///768ssvNXXq1MDRyqioKM2YMUP333+/+vbtq4ULF6pRo0aSjt+Q+quvvtIf//jHwD1adu7cqX/84x967rnnAhOKCRMmqFmzZpo1a1aJRy/9fr8knfJS6FM9V5ITL3kuTWxsrMaPH686deqoZs2aqlWrlhISEpSSklJk0vTII4/I5/MVWVyl0K+//qrHH39cUVFRmjlzptq1axd4Li4uTps3b9b+/fv15JNPqkuXLqdsT926dQNHnwvl5+cHxueT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f9WQIUN03XXXacyYMbrxxhu1du1aNWjQQC+++KKdbQYAAAAAAAAQZGU+Y3HUqFGSpG3btunDDz/Uhg0b9PXXX+vBBx/U448/XmS/Xr16qVu3bmrdunW5NxgAAAAAAABA8JU5WBw/fryysrJ04YUX6tixY3rppZf0l7/8Reeff74efvhh9e7dW9dee63uuusuDRw4UAcOHLCz3QAAAAAAAACCqMyXQg8ePFht2rRRTk6OIiIi9OSTT6pz587q27evNmzYoMWLF6tLly666KKL1Lt3b91www12thsAAAAAAABAEJU5WHziiSf0r3/9S19//bW++uorRUdHa9myZdq/f7/i4+M1ZcoUtW3bVmvXrtXPP/9sZ5sBAAAAAAAABFmZg8WuXbuqS5cuat26tX788Uc5nU5dd911uvPOO3Xs2DGtW7dOu3fv1siRIzV69GgbmwwAAAAAAAAg2MocLF555ZWaOXOm4uPj1aVLF+3du1cul0uffPKJJOmVV15RQkKCfv/738vj8Wjz5s22NRoAAAAAAABAcJV58ZY1a9booYcekmma2r17t0aMGKE777xTaWlpcrlceu+99wILtvTs2VPr169XixYtbGs4AAAAAAAAgOApc7B46623SpJ8Pp+uvvpqxcbGatq0aapRo4ZeffVVSdK5554r0zTVrVs3xcfH29NiAAAAAAAAAEFX5kuhC0VFRSk2NlaSdPHFF8swDF1xxRWB5//+979rwIAB5ddCAAAAAAAqEcMwbP0HAKGizGcslkVmZqYmTpyom266qTyLBQAAAACgUojxZsvIOmZrHWa16sp1xdlaBwCURbkFi7m5uRo0aJBq166txx57rLyKBQAAAACgUjAMQ0bWMZmr10herz2VuFwyUtrLiI6XaZr21AEAZVQuweIPP/ygIUOGyDAMzZo1S9HR0eVRLAAAAAAAlY/XKzPXY0vRXAgNIJRYvsfiiTIzM5Wamqo+ffqoQ4cOmjt3rqpXr15ebQMAAAAAAAAQosp0xuLPP/+sTz75RImJiTJNU0eOHNGWLVv0zTff6Prrr9eCBQvUuHFju9sKAAAAAAAAIESUKVjct2+fli5dKqfTKYfDoczMTO3du1e1atVStWrVFBUVZXc7AQAAAAAAAISQMgWLycnJWrhwYZFtHo9H3377rf7+97+rd+/euvPOOzVo0CDurwgAAAAA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",
      "text/plain": [
       "<Figure size 1600x600 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(16,6))\n",
    "sns.set_style(\"darkgrid\")\n",
    "sns.set_style('darkgrid',{'font.sans-serif':['SimHei','Arial']})\n",
    " \n",
    "ax1 = fig.add_subplot(1,2,1)\n",
    "ax1.set_title('获救者年龄分布')\n",
    "ax1.set_xlabel('Age')\n",
    "ax1.set_ylabel('人数')\n",
    "ax = sns.distplot(x=d_t1[d_t1['Survived'] == 1]['Age'],bins=20,color='green',kde=False,ax=ax1)\n",
    " \n",
    "ax2 = fig.add_subplot(1,2,2)\n",
    "ax2.set_title('未获救者年龄分布')\n",
    "ax2.set_xlabel('Age')\n",
    "ax = sns.distplot(x=d_t1[d_t1['Survived'] == 0]['Age'],bins=20,color='red',kde=False,ax=ax2)\n",
    " \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "6315b88c-d7cf-4050-99ae-7a0970f46de3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>892</td>\n",
       "      <td>3</td>\n",
       "      <td>Kelly, Mr. James</td>\n",
       "      <td>male</td>\n",
       "      <td>34.5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>330911</td>\n",
       "      <td>7.8292</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>893</td>\n",
       "      <td>3</td>\n",
       "      <td>Wilkes, Mrs. James (Ellen Needs)</td>\n",
       "      <td>female</td>\n",
       "      <td>47.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>363272</td>\n",
       "      <td>7.0000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>894</td>\n",
       "      <td>2</td>\n",
       "      <td>Myles, Mr. Thomas Francis</td>\n",
       "      <td>male</td>\n",
       "      <td>62.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>240276</td>\n",
       "      <td>9.6875</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>895</td>\n",
       "      <td>3</td>\n",
       "      <td>Wirz, Mr. Albert</td>\n",
       "      <td>male</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>315154</td>\n",
       "      <td>8.6625</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>896</td>\n",
       "      <td>3</td>\n",
       "      <td>Hirvonen, Mrs. Alexander (Helga E Lindqvist)</td>\n",
       "      <td>female</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3101298</td>\n",
       "      <td>12.2875</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>413</th>\n",
       "      <td>1305</td>\n",
       "      <td>3</td>\n",
       "      <td>Spector, Mr. Woolf</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>A.5. 3236</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>414</th>\n",
       "      <td>1306</td>\n",
       "      <td>1</td>\n",
       "      <td>Oliva y Ocana, Dona. Fermina</td>\n",
       "      <td>female</td>\n",
       "      <td>39.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17758</td>\n",
       "      <td>108.9000</td>\n",
       "      <td>C105</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>415</th>\n",
       "      <td>1307</td>\n",
       "      <td>3</td>\n",
       "      <td>Saether, Mr. Simon Sivertsen</td>\n",
       "      <td>male</td>\n",
       "      <td>38.5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>SOTON/O.Q. 3101262</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>416</th>\n",
       "      <td>1308</td>\n",
       "      <td>3</td>\n",
       "      <td>Ware, Mr. Frederick</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>359309</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>417</th>\n",
       "      <td>1309</td>\n",
       "      <td>3</td>\n",
       "      <td>Peter, Master. Michael J</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2668</td>\n",
       "      <td>22.3583</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>418 rows × 11 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Pclass                                          Name  \\\n",
       "0            892       3                              Kelly, Mr. James   \n",
       "1            893       3              Wilkes, Mrs. James (Ellen Needs)   \n",
       "2            894       2                     Myles, Mr. Thomas Francis   \n",
       "3            895       3                              Wirz, Mr. Albert   \n",
       "4            896       3  Hirvonen, Mrs. Alexander (Helga E Lindqvist)   \n",
       "..           ...     ...                                           ...   \n",
       "413         1305       3                            Spector, Mr. Woolf   \n",
       "414         1306       1                  Oliva y Ocana, Dona. Fermina   \n",
       "415         1307       3                  Saether, Mr. Simon Sivertsen   \n",
       "416         1308       3                           Ware, Mr. Frederick   \n",
       "417         1309       3                      Peter, Master. Michael J   \n",
       "\n",
       "        Sex   Age  SibSp  Parch              Ticket      Fare Cabin Embarked  \n",
       "0      male  34.5      0      0              330911    7.8292   NaN        Q  \n",
       "1    female  47.0      1      0              363272    7.0000   NaN        S  \n",
       "2      male  62.0      0      0              240276    9.6875   NaN        Q  \n",
       "3      male  27.0      0      0              315154    8.6625   NaN        S  \n",
       "4    female  22.0      1      1             3101298   12.2875   NaN        S  \n",
       "..      ...   ...    ...    ...                 ...       ...   ...      ...  \n",
       "413    male   NaN      0      0           A.5. 3236    8.0500   NaN        S  \n",
       "414  female  39.0      0      0            PC 17758  108.9000  C105        C  \n",
       "415    male  38.5      0      0  SOTON/O.Q. 3101262    7.2500   NaN        S  \n",
       "416    male   NaN      0      0              359309    8.0500   NaN        S  \n",
       "417    male   NaN      1      1                2668   22.3583   NaN        C  \n",
       "\n",
       "[418 rows x 11 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    " # 测试数据\n",
    "data_test = pd.read_csv('./Titanic/test.csv')\n",
    " \n",
    "#测试集\n",
    "data_test\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "b56c81aa-0d4a-485b-b153-67507399a837",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 418 entries, 0 to 417\n",
      "Data columns (total 11 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  418 non-null    int64  \n",
      " 1   Pclass       418 non-null    int64  \n",
      " 2   Name         418 non-null    object \n",
      " 3   Sex          418 non-null    object \n",
      " 4   Age          332 non-null    float64\n",
      " 5   SibSp        418 non-null    int64  \n",
      " 6   Parch        418 non-null    int64  \n",
      " 7   Ticket       418 non-null    object \n",
      " 8   Fare         417 non-null    float64\n",
      " 9   Cabin        91 non-null     object \n",
      " 10  Embarked     418 non-null    object \n",
      "dtypes: float64(2), int64(4), object(5)\n",
      "memory usage: 36.0+ KB\n"
     ]
    }
   ],
   "source": [
    "# 查看测试集大致情况，发现Age、Cabin、Fare有缺失值\n",
    "data_test.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "93b205ff-dc8f-4bda-bd4a-df325a156698",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pclass      0\n",
       "Sex         0\n",
       "Age         0\n",
       "SibSp       0\n",
       "Parch       0\n",
       "Fare        0\n",
       "Embarked    0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 用中位数补全Fare\n",
    "d_te = data_test.drop(['Name','PassengerId','Cabin','Ticket'],axis = 1)\n",
    "fare_median = d_te['Fare'].median()\n",
    "d_te['Fare'] = d_te['Fare'].fillna(fare_median)\n",
    " \n",
    "# 将性别编码\n",
    "d_te['Sex'] = d_te['Sex'].map({'male':1,'female':0}).astype(int)\n",
    " \n",
    "# 将Embarked编码\n",
    "d_te['Embarked'] = d_te['Embarked'].map({'S':2,'C':1,'Q':0})\n",
    " \n",
    "# 用模型补全Age\n",
    "d_te = set_missing_data(d_te,'Age')\n",
    " \n",
    "#  查看测试集缺失值情况\n",
    "d_te.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "a34e470d-8d1a-4a1e-a669-2ca69343a83d",
   "metadata": {},
   "outputs": [],
   "source": [
    "#划分训练集，采用20%的训练集计算不同模型的准确度\n",
    "train_features = d_t1.drop(['Survived'],axis=1)\n",
    "train_labels = d_t1[['Survived']]\n",
    " \n",
    "x_train,x_test,y_train,y_test = train_test_split(train_features,train_labels,test_size=0.2,random_state=2024)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a3d5d526-3de0-4cda-84b6-db6f28d40ef9",
   "metadata": {},
   "source": [
    "# 逻辑回归(Logistic Regression)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "57b72efc-1cfc-4364-b2f6-47ba59c8ee8c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "82.12\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    " \n",
    "logistic = LogisticRegression()\n",
    "logistic.fit(x_train,y_train)\n",
    " \n",
    "y_pred1 = logistic.predict(x_test)\n",
    "logistic_acc = round(metrics.accuracy_score(y_test,y_pred1)*100,2)\n",
    "print(logistic_acc)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a28db4b8-489b-4e94-bdc5-22ec25906348",
   "metadata": {},
   "source": [
    "# 决策树(Decision Tree)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "722b20a4-b942-46ae-9255-6921595ba879",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "78.21\n"
     ]
    }
   ],
   "source": [
    "from sklearn.tree import DecisionTreeClassifier\n",
    " \n",
    "tree = DecisionTreeClassifier()\n",
    "tree.fit(x_train,y_train)\n",
    " \n",
    "y_pred2 = tree.predict(x_test)\n",
    "tree_acc = round(metrics.accuracy_score(y_test,y_pred2)*100,2)\n",
    "print(tree_acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "adbc7fe6-7de7-4ce9-91f5-bade81ecd65c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 极限梯度提升算法(eXtreme Gradient Boosting / XGBoost)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "890a0314-5c67-4e50-adde-6e01e4a5ef86",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\n",
      "Requirement already satisfied: xgboost in d:\\miniconda3\\envs\\pytorch2\\lib\\site-packages (2.0.3)\n",
      "Requirement already satisfied: numpy in d:\\miniconda3\\envs\\pytorch2\\lib\\site-packages (from xgboost) (1.24.1)\n",
      "Requirement already satisfied: scipy in d:\\miniconda3\\envs\\pytorch2\\lib\\site-packages (from xgboost) (1.11.4)\n"
     ]
    }
   ],
   "source": [
    "!pip install xgboost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "7d2d8656-1822-423e-8920-7c920387153f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "81.56\n"
     ]
    }
   ],
   "source": [
    "\n",
    "from xgboost.sklearn import XGBClassifier\n",
    " \n",
    "xgb = XGBClassifier()\n",
    "xgb.fit(x_train,y_train)\n",
    " \n",
    "y_pred3 = xgb.predict(x_test)\n",
    "xgb_acc = round(metrics.accuracy_score(y_test,y_pred3)*100,2)\n",
    "print(xgb_acc)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a535b8ec-1ba1-4316-900b-3afd12388675",
   "metadata": {},
   "source": [
    "# Light Gradient Boosting Machine(LightGBM)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "40086c73-2a32-4122-9070-69d93957960a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[LightGBM] [Info] Number of positive: 273, number of negative: 439\n",
      "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.000076 seconds.\n",
      "You can set `force_col_wise=true` to remove the overhead.\n",
      "[LightGBM] [Info] Total Bins 201\n",
      "[LightGBM] [Info] Number of data points in the train set: 712, number of used features: 7\n",
      "[LightGBM] [Info] [binary:BoostFromScore]: pavg=0.383427 -> initscore=-0.475028\n",
      "[LightGBM] [Info] Start training from score -0.475028\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "[LightGBM] [Warning] No further splits with positive gain, best gain: -inf\n",
      "79.33\n"
     ]
    }
   ],
   "source": [
    "from lightgbm.sklearn import LGBMClassifier\n",
    " \n",
    "lgbm = LGBMClassifier()\n",
    "lgbm.fit(x_train,y_train)\n",
    " \n",
    "y_pred4 = lgbm.predict(x_test)\n",
    "lgbm_acc = round(metrics.accuracy_score(y_test,y_pred4)*100,2)\n",
    "print(lgbm_acc)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9851c032-f3bd-456a-8e4b-f8ed7fbf22a8",
   "metadata": {},
   "source": [
    "# BP神经网络(BP neural_network)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "a99ee72e-2bfb-471a-a35f-8256d7589696",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "82.12\n"
     ]
    }
   ],
   "source": [
    "from sklearn.neural_network import MLPClassifier\n",
    " \n",
    "bp = MLPClassifier()\n",
    "bp.fit(x_train,y_train)\n",
    " \n",
    "y_pred5 = bp.predict(x_test)\n",
    "bp_acc = round(metrics.accuracy_score(y_test,y_pred5)*100,2)\n",
    "print(bp_acc)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f47a1493-6e2b-4f51-a9f7-106d88ea4089",
   "metadata": {},
   "source": [
    "# 随机森林(Random Forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "da563133-e68c-4bdf-9194-1808106d2f36",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "81.56\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    " \n",
    "rfc = RandomForestClassifier()\n",
    "rfc.fit(x_train,y_train)\n",
    " \n",
    "y_pred6 = rfc.predict(x_test)\n",
    "rfc_acc = round(metrics.accuracy_score(y_test,y_pred6)*100,2)\n",
    "print(rfc_acc)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "81488323-f9e5-4012-9db2-79b8bd626f8c",
   "metadata": {},
   "source": [
    "# MLPClassifier（多层感知器分类器）MLP"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "c7de9d25-2d29-42ce-b536-79562a694e59",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "81.01\n"
     ]
    }
   ],
   "source": [
    "from sklearn.neural_network import MLPClassifier  \n",
    "\n",
    "\n",
    "clf = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=42)  \n",
    "clf.fit(x_train,y_train)\n",
    "y_pred7= clf.predict(x_test)\n",
    "clf_acc = round(metrics.accuracy_score(y_test,y_pred7)*100,2)\n",
    "print(clf_acc)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "340c9008-40c0-4b0f-a903-b71f96733791",
   "metadata": {},
   "source": [
    "# 随机梯度下降(Stochastic Gradient Descent)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "df4c6dbe-0ce0-4c99-bd5c-0789d24a2ddd",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "5c329e55-aed6-4c46-aeee-be17daf90bb6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "64.8\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import SGDClassifier\n",
    " \n",
    "sgd = SGDClassifier()\n",
    "sgd.fit(x_train,y_train)\n",
    " \n",
    "y_pred8 = sgd.predict(x_test)\n",
    "sgd_acc = round(metrics.accuracy_score(y_test,y_pred8)*100,2)\n",
    "print(sgd_acc)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d1dc7f0-6652-4faf-a0ce-48877e42d4f3",
   "metadata": {},
   "source": [
    "# 梯度提升决策树(Gradient Boosting Decision Tree / GBDT)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "bfc2299a-d11f-49a3-837f-24440c33db62",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "82.12\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import GradientBoostingClassifier\n",
    " \n",
    "gbdt = GradientBoostingClassifier()\n",
    "gbdt.fit(x_train,y_train)\n",
    " \n",
    "y_pred9 = gbdt.predict(x_test)\n",
    "gbdt_acc = round(metrics.accuracy_score(y_test,y_pred9)*100,2)\n",
    "print(gbdt_acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "3e8dea9c-d9bd-4d39-9b9f-6acb3667c0d0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Model</th>\n",
       "      <th>Scores</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Logistic Regression</td>\n",
       "      <td>82.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>BP neural_network</td>\n",
       "      <td>82.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Gradient Boosting Decision Tree / GBDT</td>\n",
       "      <td>82.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>XGBoost</td>\n",
       "      <td>81.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Random Forest</td>\n",
       "      <td>81.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>MLP</td>\n",
       "      <td>81.01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>LightGBM</td>\n",
       "      <td>79.33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Decision Tree</td>\n",
       "      <td>78.21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Stochastic Gradient Descent</td>\n",
       "      <td>64.80</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                    Model  Scores\n",
       "0                     Logistic Regression   82.12\n",
       "4                       BP neural_network   82.12\n",
       "8  Gradient Boosting Decision Tree / GBDT   82.12\n",
       "2                                 XGBoost   81.56\n",
       "6                           Random Forest   81.56\n",
       "5                                     MLP   81.01\n",
       "3                                LightGBM   79.33\n",
       "1                           Decision Tree   78.21\n",
       "7             Stochastic Gradient Descent   64.80"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_scores = pd.DataFrame({\n",
    "    'Model' : ['Logistic Regression',\n",
    "               'Decision Tree','XGBoost','LightGBM','BP neural_network','MLP','Random Forest',\n",
    "               'Stochastic Gradient Descent','Gradient Boosting Decision Tree / GBDT'],\n",
    "    'Scores' : [logistic_acc,tree_acc,xgb_acc,lgbm_acc,bp_acc,clf_acc,rfc_acc,sgd_acc,gbdt_acc]\n",
    "})\n",
    " \n",
    "model_scores.sort_values(by='Scores',ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "2943de97-0471-432b-bd42-0e8d2d0922be",
   "metadata": {},
   "outputs": [],
   "source": [
    "passenger_id = data_test['PassengerId']\n",
    "survived_pred = bp.predict(d_te)\n",
    " \n",
    "out_put = pd.DataFrame({'PassengerId' : passenger_id,'Survived' : survived_pred})\n",
    "out_put.to_csv('submission.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "c1fccad6-bae0-40c4-9ed0-4d47987f8676",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     PassengerId  Survived\n",
      "0            892         0\n",
      "1            893         0\n",
      "2            894         0\n",
      "3            895         0\n",
      "4            896         1\n",
      "..           ...       ...\n",
      "413         1305         0\n",
      "414         1306         1\n",
      "415         1307         0\n",
      "416         1308         0\n",
      "417         1309         0\n",
      "\n",
      "[418 rows x 2 columns]\n"
     ]
    }
   ],
   "source": [
    "print(out_put)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f7f0e717-e410-4931-8a64-be91d35cb285",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
